pat 乙级 1018. 锤子剪刀布 (20)

来源:互联网 发布:猿题库数据从何来 编辑:程序博客网 时间:2024/05/17 02:41



思路:

 输入数据 存入 二维数组[2][N]中 然后遍历 数组 进行比较 ,

这里的比较方法需要自己定义,比如

C(锤子)win J (剪刀)

J (剪刀)     win B(布)

B(布)    win C (锤子)

建一个 [2][3]的 二维数组 用来存比较结果 

分别代表 


甲win  甲平  甲lose

乙win  乙平  乙lose


遍历打印即可得到两者胜平负结果;


然后分别建两个 长度为3 的一维数组 用来 分别保存

甲 B win 次数 ,   甲 C win 次数, 甲 J win次数

乙 B win 次数 ,   乙 C win 次数, 乙 J win次数

遍历找出胜利次数最大的下标  如果有相同的 取字母靠前的 ,这里字母已经默认排序 B C J

建立一个手势数组 shou[3]长度为3  依次保存 B C J    ;注意字母的顺序。

然后根据刚刚找到的最大下标  打印其在这个shou[]中对应的字符即可;

=====================================================================


代码实现: 

#include<iostream>using namespace std;char c[100005][2];int count[2][3]={0};int jia[3]={0},yi[3]={0};char shou[3]={'B','C','J'};int main() {int n;cin>>n;for (int i=0;i<n ;i++ ){for (int j=0;j<2 ;j++ ){cin>>c[i][j];}}for (int i=0; i<n;i++ ){char a=c[i][0],b=c[i][1];if (a!=b){if (a=='B'&&b=='C'){count[0][0]++;count[1][2]++;jia[0]++;}if (a=='B'&&b=='J'){count[0][2]++;count[1][0]++;yi[2]++;}if (a=='C'&&b=='J'){count[0][0]++;count[1][2]++;jia[1]++;}if (a=='C'&&b=='B'){count[0][2]++;count[1][0]++;yi[0]++;}if (a=='J'&&b=='B'){count[0][0]++;count[1][2]++;jia[2]++;}if (a=='J'&&b=='C'){count[0][2]++;count[1][0]++;yi[1]++;}}else if (a==b){count[0][1]++;count[1][1]++;}}for (int i=0;i<2 ; i++){int num=0;for (int j=0;j<3 ;j++ ){if (num!=0) cout<<" ";cout<<count[i][j];num++;}cout<<endl;}int max1=jia[0],max2=yi[0];int count1=0,count2=0;for (int i=0;i<3;i++){if (jia[i]>max1){max1=jia[i];count1=i;}if (yi[i]>max2){max2=yi[i];count2=i;}}cout<<shou[count1]<<" "<<shou[count2]<<endl;return 0;}




原创粉丝点击