7-6 随机输一次 (20分)

7-6 随机输一次 (20分)

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

FigCJB.jpg

现要求你编写一个控制赢面的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方意识到你在控制结果,你需要隔 K 次输一次,其中 K 是系统设定的随机数。

输入格式:

输入首先在第一行给出正整数 N(≤10),随后给出 N 个系统产生的不超过 10 的正随机数 { K​1​​,K​2​​,⋯,K​N​​},数字间以空格分隔。这意味着第 i(i=0,1,⋯,N−1)次输局之后应该隔 K​i+1​​ 次再让下一个输局。如果对方出招太多,则随机数按顺序循环使用。例如在样例中,系统产生了 3 个随机数 {2, 4, 1},则你需要:赢 2 次,输 1 次;赢 4 次,输 1 次;赢 1 次,输 1 次;然后再次回到第 1 个随机数,赢 2 次,输 1 次。

之后每行给出对方的一次出招:“ChuiZi”代表“锤子”、“JianDao”代表“剪刀”、“Bu”代表“布”。“End”代表输入结束,这一行不要作为出招处理。输入保证对方至少出了一招。

输出格式:

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

输入样例:

3 2 4 1
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
End

输出样例:

Bu
ChuiZi
ChuiZi
ChuiZi
JianDao
Bu
Bu
JianDao
ChuiZi
ChuiZi
ChuiZi
JianDao
JianDao
#include<iostream>
using namespace std;
int main(void){
	
	int n;
	cin>>n;
	int a[n] ;
	for( int i=0;i<n;i++)
	     cin>>a[i];
	int  idx = 0 , cnt = 0;
	string b , aa="ChuiZi",bb="JianDao",cc="Bu";
	while( 1 ){
		cin>>b;
		if( b=="End")
		    return 0;
		if( cnt == a[idx] ){
			if( b == aa )
			    cout<<bb<<endl;
			else if( b == bb )
			   cout<<cc<<endl;
			else if( b == cc )
			   cout<<aa<<endl;    
		    idx = (idx+1)%n;
		    cnt=0;
		}
        else {
        	if( b == aa )
			    cout<<cc<<endl;
			else if( b == bb )
			   cout<<aa<<endl;
			else if( b == cc )
			   cout<<bb<<endl; 
		    cnt++;
		} 		
	}     
	return 0;
}

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页