写在前面

  • 使用整型变量、字符定义所有值
  • 冗余,繁琐,易出错
  • 空格属于字符,读取处理比较麻烦
  • map 封装,计算最优手势
  • 计数甲、乙生产手势
  • 题目不难,输入处理耗费部分时间
  • 普通水平,10分钟内a掉

测试用例

input: 
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J

output:
5 3 2
2 3 5

ac代码

  • 个人代码(推荐,处理字符串)
#include <map>
#include <iostream>
using namespace std;

int main()
{
int n;
scanf("%d\n", &n);

int js=0, ys=0;
string bcj;
map<char,int> jm, ym;

for(int i=0; i<n; i++)
{
getline(cin, bcj);
if(((bcj[0]=='C')&&(bcj[2]=='J'))||((bcj[0]=='J')&&(bcj[2]=='B'))||((bcj[0]=='B')&&(bcj[2]=='C')))
{
js++;
jm[bcj[0]] += 1;
}
if(((bcj[0]=='J')&&(bcj[2]=='C'))||((bcj[0]=='B')&&(bcj[2]=='J'))||((bcj[0]=='C')&&(bcj[2]=='B')))
{
ys++;
ym[bcj[2]] += 1;
}
}

// printf("%d %d %d\n", jm['B'], jm['C'], jm['J']);
// printf("%d %d %d\n", ym['B'], ym['C'], ym['J']);

printf("%d %d %d\n", js, n-ys-js, ys);
printf("%d %d %d\n", ys, n-ys-js, js);
printf("%c %c", jm['B']>=jm['C'] ? (jm['B']>=jm['J'] ? 'B' : 'J') : (jm['C']>=jm['J'] ? 'C' : 'J'),ym['B']>=ym['C'] ? (ym['B']>=ym['J'] ? 'B' : 'J') : (ym['C']>=ym['J'] ? 'C' : 'J'));

return 0;
}
#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;
}