A46318. 田忌赛马田忌赛马的故事已家喻户晓,大家也耳熟能详,即是以不同的排列顺序来支配上中下三等马来赢得比赛,体现了一种博弈的思维。现如果稍改一下比赛的规则,田忌和齐威王都按照某一周期性规律出马对战,比如:“上-下 上-中-上-下-上-中……”,就是以“上-下-上-中”为周期不断循环。胜负还是以“上等马赢中等马和下等马,中等马赢下等马,若两只马等级一样,则打平”。请问经过N轮比赛之后,田忌和齐威王谁赢得次…
填空题
中等
知识点
题目描述
田忌赛马
田忌赛马的故事已家喻户晓,大家也耳熟能详,即是以不同的排列顺序来支配上中下三等马来赢得比赛,体现了一种博弈的思维。现如果稍改一下比赛的规则,田忌和齐威王都按照某一周期性规律出马对战,比如:“上-下 上-中-上-下-上-中……”,就是以“上-下-上-中”为周期不断循环。胜负还是以“上等马赢中等马和下等马,中等马赢下等马,若两只马等级一样,则打平”。请问经过N轮比赛之后,田忌和齐威王谁赢得次数多?
输入描述
输入包含三行:
第一行为三个整数:N,NT,NQ,分别表示比了N轮,田忌出马对战的周期长度,齐威王出马对战的周期长度。N≤100,NT≤100,NQ ≤ 100。
第二行包含NT个整数,表示田忌出马对战的规律。
第三行包含NQ个整数,表示齐威王出马对战的规律。
其中,以“1”代表上等马;“2”代表中等马;“3”代表下等马。相邻两个整数之间用单个空格隔开。
输出描述
输出一行,若田忌赢的次数多,输出T;若齐威王赢的次数多,输出Q;若两人打平,输出P。
样例输入
10 3 4
1 2 3
1 2 3 3
1
2
3
样例输出
T
参考答案
#include<iostream>
using namespace std;
int n,nt,nq,t=0,q=0,ii=0,ij=0;
int tzq[105],qzq[105];
int main()
{
cin>>n>>nt>>nq;
for(int i=0;i<nt;i++) cin>>tzq[i];
for(int i=0;i<nq;i++) cin>>qzq[i];
for(int i=0;i<n;i++)
{
if(tzq[ii]<qzq[ij]) t++;
else if(tzq[ii]>qzq[ij]) q++;
else t++,q++;
ii+=1;ij+=1;
if(ii==nt) ii=0;
if(ij==nq) ij=0;
}
if(t>q) cout<<"T";
else if(q>t) cout<<"Q";
else cout<<"P";
return 0;
}
上一题
下一题