如何找到给定的一组最接近的数字?

时间:2013-09-08 21:38:37

标签: algorithm sorting

我正在尝试为以下任务找到合适的算法:

我有一定数量的资源(实际可用数量)。该量以给定的速率(增加/分钟)不断增加。目标是从所有给定选项a,...,n(此处:option_A,option_B,Option_C)购买所有可用产品。

现在,根据资源的增加,可以提前购买哪种产品(此处:option_A4,option_B3,option_C3)?

Actual available quantity                   
Resource A  142             
Resource B  56              
Resource C  383             
Resource D  335             

Increase/min                    
Resource A  2               
Resource B  263             
Resource C  482             
Resource D  301             

Option_A    ResA    ResB    ResC    ResD    bought
Product 1   00032   00066   00058   00008   *
Product 2   00292   00395   00407   00024   *
Product 3   01752   03555   02033   00073   *
Product 4   03505   31999   12200   00294   
Product 5   07009   63998   85401   02938   

Option_B    ResA    ResB    ResC    ResD    bought
Product 1   00008   00048   00006   00034   *
Product 2   00049   00240   00012   00134   *
Product 3   00098   01438   00083   00806   
Product 4   00491   04314   00499   06451   
Product 5   03929   08628   04985   12901   

Option_C    ResA    ResB    ResC    ResD    bought
Product 1   00022   00011   00024   00078   *
Product 2   00111   00106   00122   00699   *
Product 3   00334   00211   00610   04892   
Product 4   00669   01477   01831   39137   
Product 5   06020   04432   16482   78275   

我不知道是否有解决此类任务的算法,但我的方法是:

接近A
1.实际可用数量的位数总和
2.每个产品的数字总和
3.将实际可用数量的总和与每个产品总和进行比较 4.识别距离较小的产品

这很容易,但它只是在不涉及不断增加的资源的情况下仅描绘实际情况。

方法B
1.根据实际资源量加上增长率,计算到达每一种资源需要多长时间。

例如。对于Option_A,产品1,ResA:
需要:3505
可用:142
增加:2 / min
要求:3363(3505-142)
达到要求后的时间:1681.5分钟(3363/2)
2.对ResB,ResC,ResD重复并加总时间
3.对每件产品重复1 + 2 4.选择时间最短的产品

您怎么看?

1 个答案:

答案 0 :(得分:2)

看起来您正在构建资源管理游戏的脚本,例如C&C Tiberium Alliances,哈哈

我的回答是:你的第二种方法就是这样,只需要做一些改动。

在第二步中,您不会总和时间,而是选择最大。这是因为所有资源同时增加,对吧?

见这个例子:

            Res A   Res B   Res C   Res D
Current       142      56     383     335
Increment       2     263     482     301

Product 4    3505   31999   12200     294
Required     3353   31943   11817       0
Time       1676.5   121.5    24.5       0 mins

所以你需要1676.5分钟,直到Res A足以购买产品4(选项A),Res B为121.5分钟,Res C为24.5分钟,Res D为止,因为它已经足够了。

您需要实际购买产品4的时间为1676.5分钟(即最大值)

然后,对于尚未购买的每件产品,请重复一遍,然后按照剩余时间增加排序。

希望这有帮助!