描述:
田忌与齐王赛马,双方各有n匹马参赛(n<=100),每场比赛赌注为1两黄金,现已知齐王与田忌的每匹马的速度,并且齐王肯定是按马的速度从快到慢出场,现要你写一个程序帮助田忌计算他最好的结果是赢多少两黄金(输用负数表示)。
输入:
多个测例。
每个测例三行:第一行一个整数n,表示双方各有n匹马;第二行n个整数分别表示田忌的n匹马的速度;第三行n个整数分别表示齐王的n匹马的速度。
n=0表示输入结束。
输出:
每行一个整数,田忌最多能赢多少两黄金。
输入样例:
3
92 83 71
95 87 74
2
20 20
20 20
2
20 19
22 18
3
20 20 10
20 20 10
0
输出样例:
1
0
0
0
解题思路:先把田忌与齐王的马的速度进行由小到大的排序,然后用田忌的慢马去和齐王的快马先比较,一直找到比齐王的马快中的最快的并标记已比过,这样就可以保证田忌的马能够达到合理的利用,可以贪到更多的赢的场次,然后就是求出它们平局的场数并标记,用总数减去他们就是输的场数,从而就可以得出了。
代码如下:
-
#include<iostream>
-
#include<algorithm>
-
-
usingnamespacestd;
-
#defineMAX106
-
structspeed
-
{
-
intdata;
-
intstate;
-
};
-
-
intcmp(speeda,speedb)
-
{
-
if(a.data<b.data)return1;
-
elsereturn0;
-
}
-
intmain()
-
{
-
intn;
-
speednum1[MAX],num2[MAX];
-
cin>>n;
-
while(n)
-
{
-
for(inti=0;i<n;i++)
-
{
-
cin>>num1[i].data;
-
num1[i].state=0;
-
}
-
for(i=0;i<n;i++)
-
{
-
cin>>num2[i].data;
-
num2[i].state=0;
-
}
-
sort(num1,num1+n,cmp);
-
sort(num2,num2+n,cmp);
-
signedintsum1=0,sum2=0;
-
for(i=0;i<n;i++) //这边的目的是求出赢的场数
-
{
-
for(intj=n-1;j>=0;j--)
-
{
-
if(num1[i].data>num2[j].data)
-
{
-
if(num1[i].state==0&&num2[j].state==0)
-
{
-
sum1++;
-
num1[i].state=1;
-
num2[j].state=1;
-
break;
-
}
-
}
-
}
-
}
-
for(i=0;i<n;i++) //这边的额目的是求出平局的场数
-
{
-
for(intj=0;j<n;j++)
-
{
-
if(num1[i].data==num2[j].data)
-
{
-
if(num1[i].state==0&&num2[j].state==0)
-
{
-
sum2++;
-
num1[i].state=1;
-
num2[j].state=1;
-
break;
-
}
-
}
-
}
-
}
-
cout<<2*sum1-n+sum2<<endl;
-
cin>>n;
-
}
-
return0;
- }
分享到:
相关推荐
高级人工智能博弈田忌赛马解题
16《田忌赛马》课后作业(含答案)-五下语部编版.pdf
田忌赛马问题田忌赛马问题田忌赛马问题田忌赛马问题田忌赛马问题
齐王和田忌均有n(1到100的整数)匹马 只有当田忌马的战力值大于齐威王马的战力值时 田忌才能赢 问田忌最多能赢几场 其中战力值用整数表示
如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛。赢一局,田忌可以得到200两银子,输一局,田忌就要输掉200两银子,平局的话不输不赢。 请问田忌最多能赢多少...
《田忌赛马》课件(第二课时).ppt
mathematica软件解决实际问题——田忌赛马3.pdf
数学广角——田忌赛马演示PPT课件.pptx
田忌与齐王赛马,双方各有n匹马参赛(n),每场比赛赌注为1两黄金,现已知齐王与田忌的每匹马的速度,并且齐王肯定是按马的速度从快到慢出场,现要你写一个程序帮助田忌计算他最好的结果是赢多少两黄金(输用负数...
分别输入田忌和齐王的马的速度。先排好序,再分情况讨论,代码易懂,仔细看看。不懂就调试一下。
本人亲身经历的华为机试题,希望对即将参加华为校招的同学有一定的帮助。
数学四上田忌赛马PPT课件.pptx
之前帮别人写的田忌赛马博弈矩阵分析,java实现,有需要的可以参考欢迎提出意见
算法实验,采用动态规划的思想,已通过测试。
输入n[1, 100]组田忌和齐威王的马的速度,使用贪心法求田忌胜出的最多盘数(赢局数—输局数,平局数不算分),设计贪心策略,实现程序。 输入:组数n[1, 100],田忌和齐威王每组马的速度,每一组包含两个正整数,...
16《田忌赛马》说课稿.pdf
16《田忌赛马》说课稿(统编版小学语文五年级下册精品).pdf
四年级数学上册田忌赛马课件PPT学习教案.pptx
最新人教版四年级数学上册《田忌赛马问题》课时练习--.pdf