L1-4 稳赢 (15分)

L1-4 稳赢 (15分)

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。

输入格式:

输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”、JianDao代表“剪刀”、Bu代表“布”。End代表输入结束,这一行不要作为出招处理。

输出格式:

对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。

输入样例:

2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End

输出样例:

Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu
这个题很简单,但是一直有坑,我用char数组跟字符串比较一直不行,知道我最后换成了String才行,以后再继续探讨吧!

刚才问了冯大佬 说
char二维不能直接判断等号 靠!!!

#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;

int main()
{
	
     int n;
     cin>>n;
     int i=0;
      int flag=0;
 
     string s;
    while(1)
	 	{
 		cin>>s;
 		 
 	 if(s=="End")break;
 		if(i==0||i%n||flag==0)
		{
 			i++;
	     flag=1;
		if(s=="Bu")
		cout<<"JianDao"<<endl;
		else if(s=="ChuiZi")
		cout<<"Bu"<<endl;
	    else if(s=="JianDao")
		cout<<"ChuiZi"<<endl;
		}
		else
		{
		flag=0;
		cout<<s<<endl;
		}
	
 }
}

上面我写的,下面人家写的。。。菜鸡与大佬的差距!!!

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

map<string,string> mp;

void init(){
	mp["ChuiZi"] = "Bu";
	mp["Bu"] = "JianDao";
	mp["JianDao"] = "ChuiZi";
}
int main(){
	string input;
	int t = 1;
	int k;
	cin>>k;
	init();
	while(cin>>input){
		if(input == "End")break;
		if(t == k+1){
			cout<<input<<endl;
		}else{
			cout<<mp[input]<<endl;
		}
		if(t == k+1) t = 1;
		else t++;
	}
	return 0;
}
posted @ 2020-03-05 22:28  小申同学  阅读(957)  评论(0编辑  收藏  举报