我正在尝试为以下任务找到合适的算法:
我有很多资源(实际可用数量)。这个量以给定的速率不断增加(增加/分钟)。目标是从所有给定的选项a,…,n(这里是:选项a,选项B,选项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
一。实际可用量位数之和
2每种产品的位数之和
三。将实际可用量之和与各产品之和进行比较
四。识别距离较短的产品
这很容易,但它只描绘了实际情况,而不涉及不断增加的资源。
方法B
一。根据实际资源量加上增长率,计算到达每个资源所需的时间。
例如,对于选项A,产品1,ResA:
需要:3505
可用:142
增加:2/min
要求:3363(3505-142)
达到要求后时间:1681,5min(3363/2)
2对ResB、ResC、ResD重复上述步骤,并对时间量求和
三。对每个产品重复1+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分钟(即最大值)。
然后对每一个尚未购买的产品重复这个步骤,然后随着剩余时间的增加进行排序。
希望这有帮助!

关于algorithm - 如何从给定的数字中找到最接近的一组数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18688901/

10-11 12:21