我已经达到了我计划中最简单的部分,但我有点失落,关于我如何能够做到这一点并同时保持高效。
attacker= {3,10,14,15,17,18};
defender = {1,5,7,9,12,18};
所以这两个都是两个长度相同的数组,也是排序的。 在上下文中,两个数组中的数字代表用户输入的滚动。
除了这种风险之外,允许防守者重新安排他的阵列,以便他可以赢得更多的战斗。如果他愿意的话,他可以将5和3配对。
如果没有非常低效或容易出错的话,我就失去了如何做到这一点。
答案 0 :(得分:4)
我会提出这个算法:
合并两个数组并标记防御者(d)或攻击者(a)的元素:
d a d d d a d a a a d a
1 3 5 7 9 10 12 14 15 17 18 18
(对于两个相同的元素,首先放置防守者。)
然后选择a d
模式所在的对;这些将是后卫赢得的战斗:
d a d d d a d a a a d a
1 3 5 7 9 10 12 14 15 17 18 18
^ ^ ^ ^ ^ ^
首先安排获胜的数字,然后输掉失败的数字:
defender = {5, 12, 18, 1, 7, 9}