程序填空题:求解田忌赛马问题(贪心法)
齐威王与大将田忌赛马。双方约定每人各出300匹马,并且在上、中、下三个等级中各选一匹进行比赛,由于齐威王每个等级的马都比田忌的马略强,比赛的结果可想而知。现在双方各n匹马,依次派出一匹马进行比赛,每一轮获胜的一方将从输的一方得到200银币,平局则不用出钱,田忌已知所有马的速度值并可以安排出场顺序,问他如何安排比赛获得的银币最多。
```c++
#include
#include
using namespace std;
#define MAX 1001
//问题表示
int n;
int a[MAX];
int b[MAX];
//求解结果表示
int ans;
void solve() //求解算法
{
sort(a,a+n); //对a递增排序
sort(b,b+n); //对b递增排序
ans=0;
int lefta=0,leftb=0;
int righta=n-1,rightb=n-1;
while () //比赛直到结束
{
if (a[righta]>b[rightb]) //田忌最快的马比齐威王最快的马快,两者比赛
{
ans+=200;
;
;
}
else if (a[righta]b[leftb]) //田忌最慢的马比齐威王最慢的马快,两者比赛
{
ans+=200;
;
;
}
else
{
if (a[lefta]答案:
第1空:lefta<=righta
第2空:righta--
第3空:rightb--
第4空:lefta++
第5空:rightb--
第6空:lefta++
第7空:leftb++
第8空:lefta++
第9空:rightb--