与另一个数组相比,重新排列数组是最佳的

时间:2016-03-04 21:54:50

标签: c arrays sorting

我已经达到了我计划中最简单的部分,但我有点失落,关于我如何能够做到这一点并同时保持高效。

attacker= {3,10,14,15,17,18};
defender = {1,5,7,9,12,18};

所以这两个都是两个长度相同的数组,也是排序的。 在上下文中,两个数组中的数字代表用户输入的滚动。

除了这种风险之外,允许防守者重新安排他的阵列,以便他可以赢得更多的战斗。如果他愿意的话,他可以将5和3配对。

如果没有非常低效或容易出错的话,我就失去了如何做到这一点。

1 个答案:

答案 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}