3

我正在编写一个用于对某个项目进行自动出价的脚本。我认为描述我正在尝试做的最简单的方法是给你一个场景。假设 1,000 美元的增量:

Asking Price: $1,000
Bidder 1: Max Bid of $4,000 -> High Bid: $1,000
Bidder 2: Max Bid of $3,000 -> High Bid: $3,000 -> [AUTO BIDDER 1] High Bid: $4,000
Bidder 3: Max Bid of $8,000 -> High Bid: $5,000
Bidder 4: Max Bid of $10,000 -> [AUTO BIDDER 3] High Bid: $8,000 -> High Bid: $9,000

我试图想出一个循环来遍历它们,但我不确定如何。我想出了一个循环,它适用于每个出价,但我想跳过每增加 1,000 美元,而是根据最高出价提高最高出价。

我有两个表设置:bidsmaxbids。这是我想到的循环:

  • 插入新出价
  • 开始循环
    • $high = 从出价表中获取当前最高出价
    • $next = 从 maxbids 中获取 maxbid > $high 的最低maxbid
    • if ($next >= ($high + 增量)
      • 插入出价
    • else // 假设已经有最高出价
      • 中断循环
  • 结束循环

这会起作用,但正如我所说,这将继续插入所有 1,000 美元的增量。我宁愿它按照我上面展示的方式工作。有什么建议么?

4

1 回答 1

5

我认为您可以使用条件树,而不是循环

这是一个有趣的问题,从我的理解来看,每当有新的出价时,这个功能就会触发。你想要做的应该是这样的:

  1. 存储用户尝试插入的出价。
  2. 获取当前投标人的最高出价(不应该有高于此的出价,因为它们会被此函数的先前迭代解决)。

下一个:

/**
 * $currentBidder = The current high bidder
 * $highBid       = The current high bidder's high bid
 * $thisBidder    = Bidder placing the new bid
 * $thisBid       = The bid that triggered the function
 * $increment     = The minimum bid increment
 */
function placeBid($currentBidder,$highBid,$thisBidder,$thisBid,$increment) {
    if($thisBid > $highBid) {
        // Insert $highBid as current bid, for $currentBidder
        if($thisBid > $highBid + $increment) {
            // Insert $thisBid into highbids table
            // Insert $highBid + $increment as current bid, for $thisBidder
        } else {
            // Insert $thisBid as current bid, for $thisBidder
        }
    } else {
        // Insert $thisBid as current bid for $thisBidder
        if($highBid > $thisBid + $increment) {
            // Insert $thisBid + $increment as current bid, for $currentBidder
        } else {
            // Insert $thisBid as current bid, for $currentBidder
        }
    }
}

笔记:

  1. 如果新出价等于最高出价,我代表当前出价者优先于新出价者。
  2. 在所有情况下,我都倾向于最高出价,即使这不会高于当前的最高出价 + 增量。

显然,您必须检查它是否是第一个出价,如果是,请将出价设置为最低要价。您必须检查出价是否有效(大于当前出价+增量。我没有包含该代码。

据我所知,如果每次出价时都触发该函数,则根本不需要循环,只需要一个条件树。

设想:

Item Current Bids: A, 4000
Item Current Max:  A, 4000
--> C bids 7500
Item Current Bids: A, 4000; C, 5000
Item Current Max:  C, 7500
--> B bids 7500
Item Current Bids: A, 4000; C, 5000; B, 7500; C, 7500
Item Current Max:  C, 7500
--> A bids 9000
Item Current Bids: A, 4000; C, 5000; B, 7000; C, 7500; A, 8500
Item Current Max:  A, 9000   
于 2013-08-08T21:11:13.067 回答