这个算法应该怎么实现呢,算法盲有点头疼
資深大佬 : asuka321 2
背景
朋友在玩一个手游,里面有正邪 2 种性格设定,正邪性格内各分为 6 种命格,正邪内对应命格不能同时存在(如下图正义和邪恶不能同时存在),但可以将一种命格清 0 积累相反的命格点数,命格点数到了之后可以换相应的称谓,要算出拿到以下所有称号需要的最短时间。
逻辑表达
- 存在 A,B,C,D,E,F 六种正义属性和 A’,B’,C’,D’,E’,F’六种邪恶属性,每种属性有一定的属性值;
- A 和 A’不能同时存在(其余属性同理),但可以将 A 转换为 A’,但转换过会属性值会变为 0;
- 每天每种属性都可以加 10 点,也可以不加。相反属性允许同时相加,如给 A 加了 10 点属性值,A’再加 10 点等于给 A 减了 10 点属性值;
- 初始状态为邪恶属性值全满,可以理解为邪恶属性初始值无限大;
- 需要的称号如上图所示;
当前思路
没有思路,感觉上可以抽象成点到点的最短路径问题,但因为有转换清 0 的存在好像又不是这样=。=
大佬有話說 (12)