PAT/B/1018
#include <iostream>
using namespace std;
int main()
{
int N;
int a[3]={0},b[3]={0};
int s1=0,f1=0,p1=0,s2=0,f2=0,p2=0;
char jh[3]={'C','J','B'};
char jia,yi;
cin>>N;
for(int i=0;i<N;++i)
{
cin>>jia>>yi;
if(jia==yi) {++p1;++p2;}
else if(jia=='B'&&yi=='C') {
++s1;++f2;++a[2];
}
else if(jia=='B'&&yi=='J'){
++f1;++s2;++b[1];
}
else if(jia=='C'&&yi=='J')
{
++s1;++f2;++a[0];
}
else if(jia=='C'&&yi=='B')
{
++f1;++s2;++b[2];
}
else if(jia=='J'&&yi=='B')
{
++s1;++f2;++a[1];
}
else if(jia=='J'&&yi=='C')
{
++f1;++s2;++b[0];
}
}
cout<<s1<<' '<<p1<<' '<<f1<<endl;
cout<<s2<<' '<<p2<<' '<<f2<<endl;
int idex=0;
for(int i=0;i<3;++i)
{
if(a[i]>a[idex]) idex=i;
}
for(int i=0;i<3;++i)
{
if(a[i]==a[idex]&&jh[i]<jh[idex]) idex=i;
}
cout<<jh[idex]<<' ';
for(int i=0;i<3;++i)
{
if(b[i]>b[idex]) idex=i;
}
for(int i=0;i<3;++i)
{
if(b[i]==b[idex]&&jh[i]<jh[idex]) idex=i;
}
cout<<jh[idex];
return 0;
}
这道题没有什么难的,唯一比较难的是最后一点有点类似于排序的,三元选择问题,可能是我把他想得太难了吧,本来也想用三目运算符,但是想想合在一起太麻烦了。结果看了liuchuo大神的代码,发现好像可以分开来。
还有一点需要注意的是它已经类似于依照别的对应数据对己方数据进行排序,用这时就需要用索引值来进行绑定,这是我一开始没有注意到后面想起来的。
最后一点,在数据多的时候记得用数组。
liuchuo大神:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int jiawin = 0, yiwin = 0;
int jia[3] = {0}, yi[3] = {0};
for (int i = 0; i < n; i++) {
char s, t;
cin >> s >> t;
if (s == 'B' && t == 'C') {
jiawin++;
jia[0]++;
} else if (s == 'B' && t == 'J') {
yiwin++;
yi[2]++;
} else if (s == 'C' && t == 'B') {
yiwin++;
yi[0]++;
} else if (s == 'C' && t == 'J') {
jiawin++;
jia[1]++;
} else if (s == 'J' && t == 'B') {
jiawin++;
jia[2]++;
} else if (s == 'J' && t == 'C') {
yiwin++;
yi[1]++;
}
}
cout << jiawin << " " << n - jiawin - yiwin << " " << yiwin << endl << yiwin << " " << n - jiawin - yiwin << " " << jiawin << endl;
int maxjia = jia[0] >= jia[1] ? 0 : 1;
maxjia = jia[maxjia] >= jia[2] ? maxjia : 2;
int maxyi = yi[0] >= yi[1] ? 0 : 1;
maxyi = yi[maxyi] >= yi[2] ? maxyi : 2;
char str[4] = {"BCJ"};
cout << str[maxjia] << " " << str[maxyi];
return 0;
}