题目答案
填空位置 ①:
0
填空位置 ②:
y[j] < y[i]
填空位置 ③:
f[i]++
填空位置 ④:
f[i] >= max_f
填空位置 ⑤:
ans = i
题目解析
先大致浏览一遍,可以得出,f[i]f[i] 应该是第 ii 个点的战斗力大小,ansans 应该是战斗力最高的点的编号,max_fmaxf 是战斗力最高的点的战斗力。所以第一空明显应该是赋初值,第二三五三空都比较简单,关键在于第四空,要注意题目中说到,战斗力相同要取编号大的,所以应该要加等于号。
题目答案
填空位置 ①:
false
填空位置 ②:
used[data[i]] = false
填空位置 ③:
j
填空位置 ④:
n
填空位置 ⑤:
break
题目解析
used[i] == 0
表示数字i还没有被使用过,每次倒着找到第一个能变大的数字然后变大,接着把后面的数字直接从小到大安排,就生成了一个新的组合。flagflag 是标记能不能找到一个新的排列,第一层的循环意义是把排列中的第 ii 位给它清零就是第二个空的作用,如果找到一个排列就把后面的排列补全(在剩余的元素中找到最小的排列)然后跳出循环,就是第四和第五个空的意思。