PAT-乙-1018 1018 锤子剪刀布 (20 分)
代码
#include <iostream>
using namespace std;
int main()
{
int n = -1;
cin>>n;
int a[3] = {0};
int b[3] = {0};
int awin[3] = {0};
int bwin[3] = {0};
for(int i=0; i<n; i++)
{
char astr = NULL;
cin>>astr;
char bstr = NULL;
cin>>bstr;
if(astr==bstr)
{
a[1]++;
b[1]++;
}
else if((astr=='C' && bstr=='J') || (astr=='J' && bstr=='B')
|| (astr=='B' && bstr=='C'))
{
a[0]++;
b[2]++;
if(astr=='B'){
awin[0]++;
}
else if(astr=='C'){
awin[1]++;
}
else{
awin[2]++;
}
}
else
{
a[2]++;
b[0]++;
if(bstr=='B'){
bwin[0]++;
}
else if(bstr=='C'){
bwin[1]++;
}
else{
bwin[2]++;
}
}
}
int maxA = -1;
int maxApos = -1;
int maxB = -1;
int maxBpos = -1;
for(int j=0; j<3; j++){
if(awin[j]>maxA){
maxA = awin[j];
maxApos = j;
}
if(bwin[j]>maxB){
maxB = bwin[j];
maxBpos = j;
}
}
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
cout<<b[0]<<" "<<b[1]<<" "<<b[2]<<endl;
if(maxApos==0){
cout<<"B ";
}
else if(maxApos==1){
cout<<"C ";
}
else{
cout<<"J ";
}
if(maxBpos==0){
cout<<"B";
}
else if(maxBpos==1){
cout<<"C";
}
else{
cout<<"J";
}
return 0;
}
注解
水题。
(1)用数组记录双方胜平负次数。
(2)用另外一个数组记录双方胜利的手势次数。