团体程序设计天梯赛——L1-044 稳赢
https://pintia.cn/problem-sets/994805046380707840/problems/994805086365007872
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。
输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”、JianDao代表“剪刀”、Bu代表“布”。End代表输入结束,这一行不要作为出招处理。
输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。
输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu
用字符串a代表输入,b[10000]代表出招策略,根据a的不同对字符串数组b[10000]进行赋值,用count记录对局数,输入为"End"的话对局数不增加,用p变量来实现间隔k局就平局的功能,当达到间隔条件时,将p置为0,重新计数,达到循环间隔的目的。最后输出b[0]~b[count](这里可能会问为什么要让b数组的最大下标为10000,因为我最开始是100,测试点二一直说运行时错误,所以我就一个零一个零的加,加到通过为止)。
#include<iostream>
#include<string>
using namespace std;
int main(){
int k,p=0,count=0;
string a,b[10000];
cin>>k;
for(int i=0;;i++){
cin>>a;
if(a=="End")
break;
count++;
if(p==k){
p=0;
b[i]=a;
}
else{
p++;
if(a=="ChuiZi")
b[i]="Bu";
if(a=="JianDao")
b[i]="ChuiZi";
if(a=="Bu")
b[i]="JianDao";
}
}
for(int i=0;i<count;i++){
cout<<b[i];
if(i<count-1)
cout<<endl;
}
}