设生命槽 a个b% 力量c个d% 物防e个f% 法防g个h%   卡槽内卡生命总量w,力量总量x,物防总量y,法防总量z
a+b+c+d=10w*b%+x*d%+y*f%+z*h%趋向最大。这个怎么求解?都是未知数,范围太大了。先设定百分比的上下限和生命力量最大最小值再来分析才有意义。

解决方案 »

  1.   

    而且卡槽只是添加单一能力,哪里像你这个可以多个能力可选的,你这样变相增加了判定的难度也就是说你有2张卡卡1 生12000  力8000
    卡2 生 15000  力5000卡槽1  生命5%
    卡槽2  力量7%很明显 
    卡2 放入 卡槽1
    卡1 放入  卡槽2例2卡1 生命15000  力8000
    卡2  生命 12000 力 5000卡槽1 生5%
    卡槽2 力7%这个时候理论上都应该放入卡1  2个卡槽都会得到最大值,实际上卡就1张,所以要判断 卡1放入哪个卡槽等到能力最大卡1放入卡槽1 15000*5%=750
    卡1放入卡槽2 8000*7%=560750>560所以卡1 放入卡槽1 ,卡2 替补放入卡槽2.题主所说的是有10个卡槽卡槽增加能力y = 卡牌的属性能力 m * 卡槽属性增加比率 n     当m值不变时  n越大 y越大 也就是说同一张卡放入 比率最高的卡槽 能力增加越多                                                                                      同理当n值不变时   m越大 y越大 也就是说同一个卡槽  放入的卡牌属性越大 y越大 
    这样的话我们首先对卡槽的属性比率分别进行排序 由大到小然后对所有的卡牌进行排序 也是由大到小然后根据 根据各属性卡槽数 取前几位 然后再进行 判断 放入哪个卡槽合适举例来说 一共有3个生命卡槽增加生命比率为 s1、s2、s3,那我们只要把所有卡按生命排序 从大到小 取生命最大的前3张 c1、c2、c3做个循环判断 得到 增加生命最大值,其他属性也做类似操作。如果同1张卡被用了2次,这里就要添加替补卡牌进行判断举例来说生命卡槽3个 生命卡 从大到小 排列 c1 c2 c3 c4。。
    力量卡槽3个 力量卡 从大到小 排列 c1 c5 c6 c7。。c1 被用到2次这时候就要进行判断 首先c1 被放入 生命卡槽中用到 c1 c2 c3 ,力量卡槽只能用 c5 c6 c7 分别求最大值然后相加等于y1
     然后把c1 放入力量卡槽  这时候 生命卡槽 用到c2 c3 c4, 力量卡槽用 c1 c5 c6 分别求最大值然后相加等于y2  y1 大于y2 c1 被放入生命卡槽, y1小于y2 c1 被放入力量卡槽。卡牌没有被重复使用 配卡完成得到增加属性最大值。多卡关联属性重复也可以通过求最大增加属性进行判断。