我正在尝试为以下任务找到合适的算法:
我有一定数量的资源(实际可用数量)。该量以给定的速率(增加/分钟)不断增加。目标是从所有给定选项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.选择时间最短的产品
您怎么看?
答案 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分钟(即最大值)
然后,对于尚未购买的每件产品,请重复一遍,然后按照剩余时间增加排序。
希望这有帮助!