题目:竞选时,要求选民在n个候选人中选择,n个人的名字为 A,B,C,D……连续n个大写字母,如果选择n个人名字之外的人员,则为废票。 统计时以输入’#’为结束标记。请按候选人的得票数目从大到小顺序输出候选人的名字及得票情况。Time Limit Exceeded#include<iostream>#include<algorithm>using namespace std;int n,c;char na[233];struct ren{ char name; int sum;}ren['a'];void init(){ cin>>n; for(char i='A';i<='A'+n;i++) { ren[i].name=i; } for(int i=1;;i++) { cin>>na[i]; c++; if(na[i]=='#') break; }}void work(){ for(int i=1;i<c;i++) { for(char j='A';j<='A'+n;j++) { if(na[i]==j) { ren[j].sum=ren[j].sum+1; break; } } } for(char i='A';i<'A'+c-1;i++) { for(char j=i+1;j<'A'+c;j++) { if(ren[i].sum<ren[j].sum) swap(ren[i],ren[j]); } }}void print(){ for(int i='A';i<'A'+n;i++) { cout<<ren[i].name<<" "<<ren[i].sum<<endl; }}int main(){ init(); work(); print(); return 0;}正解:#include<iostream>#include<algorithm>using namespace std;int n,c;char na[2333];struct ren{ char name; int sum;}ren['a'];void init(){ cin>>n; for(char i='A';i<'A'+n;i++) { ren[i].name=i; } for(int i=1;;i++) { cin>>na[i]; c++; if(na[i]=='#') break; }}void work(){ for(int i=1;i<c;i++) { if(na[i]>'Z') break; for(char j='A';j<'A'+n;j++) { if(na[i]==j) { ren[j].sum=ren[j].sum+1; break; } } } for(char i='A';i<'A'+n;i++) { for(char j=i+1;j<='A'+n;j++) { if((ren[i].sum<ren[j].sum)||((ren[i].sum==ren[j].sum)&&(ren[i].name>ren[j].name))) swap(ren[i],ren[j]); } }}void print(){ for(int i='A';i<'A'+n;i++) { cout<<ren[i].name<<":"<<ren[i].sum<<endl; }}int main(){ init(); work(); print(); return 0;}