中国古代的历史故事“田忌赛马”是为大家所熟知的。话说齐王和田忌又要赛马了,他们各派出N匹马,每场比赛,输的一方将要给赢的一方200两黄金,如果是平局的话,双方都不必拿出钱。现在每匹马的速度值是固定而且已知的,而齐王出马也不管田忌的出马顺序。请问田忌该如何安排自己的马去对抗齐王的马,才能赢取最多的钱?
输入:第一行为一个正整数n (n < = 2000) ,表示双方马的数量。第二行有n个整数表示田忌的马的速度。第三行的n个整数为齐王的马的速度。
输出:仅有一行,为田忌赛马可能赢得的最多的钱,结果有可能为负。
比如输入为
3
92 83 71
95 87 74
则输出为
200
#include<bits/stdc++.h> using namespace std; int main() { int n; cin >> n; int tj[1001], king[1001], count = 0; int tj_min = 0, tj_max = n - 1; int king_min = 0, king_max = n - 1; for (int i = 0; i < n; i++) cin >> tj[i]; for (int i = 0; i < n; i++) cin >> king[i]; sort(tj, tj + n); sort(king, king + n); while (n--) { if (tj[____(1)_____] > king[____(2)______]) { count++; tj_max--; king_max--; } else if (tj[_____(3)_____] < king[_____(4)_______]) { count--; tj_min++; king_max--; } else { if (tj[tj_min] > king[king_min]) { count++; _____(5)_______; _____(6)_______; } else { if (______(7)_______) count--; tj_min++; ________(8)________ } } } cout << count*200 << endl; return 0; }
(1)①处和②处应该填( )
A.tj_max和king_max B. tj_min和king_min
C. tj_min和king_max D. tj_max和king_min
(2)③处和④处应该填( )
A.tj_min和king_max B. tj_min和king_min
C. tj_max和king_max D. tj_max和king_min
(3)⑤处和⑥处应该填( )
A.tj_min--和king_min++ B. tj_max++和king_min++
C. tj_min++和king_min++ D. tj_max++和king_min--
(4)⑦处应填( )
A.tj[tj_min]<king[king_max] B. tj[tj_min]>king[king_max]
C. tj[tj_max]<king[king_max] D. tj[tj_min]>king[king_min]
(5)⑧处应填( )
A.king_max-- B. king_max++
C. king_min-- D. king_min++