觉得自己写的这个还是有很差,而且没有完全Accept ,还是没有进行好的设计。TBC
#include<iostream> #include<map> using namespace std; //学习了一下map 的使用,但是此题不能用map,要找到一个更好的去描述规则的东西 //这个题总而言之是很繁琐,需要注意很多变量的规整,只要有时间久能做出来,但是没有什么技巧的东西,但是规定时间里面要找到相应的方法快速很重要 //submit : 14 分,后面三个用例 不过,怀疑是 三个数比较的时候出的错误 //得到了一个比较三者最大值的一个最短行代码 /*int max(int a,int b,int c = 0) { if (a < b) { a = b; } if (c > a) { a = c; } return a; }*/ struct player { int win ; int lose; int tie; int Bwin; int Cwin; int Jwin; char winMax; }J= {0,0,0,0,0,0,'B'},Y={0,0,0,0,0,0,'B'}; char compareThreeMax(player person) { if(person.Bwin >= person.Cwin && person.Bwin >= person.Jwin) person.winMax = 'B'; else if(person.Cwin >= person.Jwin && person.Cwin >= person.Bwin) person.winMax = 'C'; else if(person.Jwin > person.Cwin && person.Jwin > person.Bwin) person.winMax = 'J'; return person.winMax; } int main() { int count; cin >> count; //map<string,int>m1,m2,m3; char showJ,showY; while(count > 0) { cin >> showJ >> showY; int comp = showJ - showY; switch(comp) { case 0://平 { J.tie ++; Y.tie ++; break; } case 1://包袱赢 { J.lose ++; Y.win ++; Y.Bwin ++; break; } case -1: //j win { J.win ++; J.Bwin ++; Y.lose ++; break; } case 7: //剪刀赢 y win { J.lose ++; Y.win ++; Y.Jwin ++; break; } case -7: { J.win ++; J.Jwin ++; Y.lose ++; break; } case 8://j锤子赢, { J.win ++; J.Cwin ++; Y.lose ++; break; } case -8: { J.lose ++; Y.win ++; Y.Cwin ++; break; } } count --; } //s输出甲的,和乙的 //比较甲和乙的各个字母赢的次数,输出最大的。 cout<<J.win<<" "<<J.tie<<" "<<J.lose<<endl; cout<<Y.win<<" "<<Y.tie<<" "<<Y.lose<<endl; J.winMax = compareThreeMax(J); Y.winMax = compareThreeMax(Y); cout<<J.winMax<<" "<<Y.winMax<<endl; return 0; }