题解:P6427 [COCI2008-2009#1] PTICE
首先先要得出这三个人的循环节,分别为:ABC,BABC与 CCAABB。然后就用这三个不同的循环节去比较正确答案。其中需要注意的是,在得出最高的正确数后,还要判断有几个人都获得了最高的分数,也就是说,输出的姓名不只 $1$ 个,这一点需要额外注意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <bits/stdc++.h> using namespace std; int main() { int n,ans[3],num = 0;string str,d[3] = {"ABC","BABC","CCAABB"},name[3] = {"Adrian","Bruno","Goran"}; cin>>n>>str; for(int i = 0;i < 3;i++) { ans[i] = 0; for(int j = 0;j <= str.size() - 1;j++) if(str[j] == d[i][j % d[i].size()]) ans[i]++; num = max(num,ans[i]); } cout<<num<<endl; for(int i = 0;i < 3;i++) if(ans[i] == num) cout<<name[i]<<endl; return 0; }
|