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;
}