我正在尝试为以下任务找到合适的算法:
我有很多资源(实际可用数量)。这个量以给定的速率不断增加(增加/分钟)。目标是从所有给定的选项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/