题目链接:
https://pintia.cn/problem-sets/994805260223102976/problems/994805304020025344
思路:比较简单的题,可分别用j[3],y[3]记录甲乙两人胜利时出的招,分别对应B,C,J;为什么是这个顺序,是因为题目中说了:“如果解不唯一,则输出按字母序最小的解。”为了方便处理,干脆就直接按照字母顺序排列了。再用ej[3],ey[3]记录甲乙两人的胜,平,负。分别按照不同的情况进行处理就行。
填坑日记:本题我没进坑哈哈哈哈
代码:
#include<iostream>
using namespace std;
int main()
{
char a,b;
string s="BCJ";
int n,i=0,j[3]={0},y[3]={0},ej[3]={0},ey[3]={0},maxj,maxy;
cin>>n;
for(;i<n;i++) //记录战况
{
cin>>a>>b;
if(a=='B'&&b=='C') //甲赢
{
j[0]++;
ej[0]++;
ey[2]++;
}
else if(a=='C'&&b=='J') //甲赢
{
j[1]++;
ej[0]++;
ey[2]++;
}
else if(a=='J'&&b=='B') //甲赢
{
j[2]++;
ej[0]++;
ey[2]++;
}
else if(b=='B'&&a=='C') //乙赢
{
y[0]++;
ey[0]++;
ej[2]++;
}
else if(b=='C'&&a=='J') //乙赢
{
y[1]++;
ey[0]++;
ej[2]++;
}
else if(b=='J'&&a=='B') //乙赢
{
y[2]++;
ey[0]++;
ej[2]++;
}
else //平局
{
ey[1]++;
ej[1]++;
}
}
cout<<ej[0]<<" "<<ej[1]<<" "<<ej[2]<<endl;
cout<<ey[0]<<" "<<ey[1]<<" "<<ey[2]<<endl;
if(j[0]>=j[1]) maxj=0;
else maxj=1;
if(j[maxj]>=j[2]);
else maxj=2;
if(y[0]>=y[1]) maxy=0;
else maxy=1;
if(y[maxy]>=y[2]);
else maxy=2;
cout<<s[maxj]<<" "<<s[maxy]<<endl;
return 0;
}
好了又到了围观大神的时候了,看了大神的代码,感觉自己写的好麻烦啊。。。特别是找出甲乙两人获胜次数最多的手势的时候,放大神代码:
链接:https://www.liuchuo.net/archives/539
代码:
#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;
}
大神用的是?:条件运算符,其实这些算符在之前我们都学过,如果单把它拿出来让我们读代码的时候也会读,但是在写代码的时候还是按照惯性使用了if语句判断,但使用?:条件运算符简单很多。有些时候在一些小的细节中可以看出自己对基础语言的掌握程度。今天又是膜大佬的一天呢O(∩_∩)O~