程序填空题:求解田忌赛马问题(贪心法)
齐威王与大将田忌赛马。双方约定每人各出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--