AC代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
int main(){
int n;
cin>>n;
cin.get();
string c;
map<string,int> TIME;
for(int i=0;i<n;i++) {
getline(cin, c);
TIME[c]++;
}
map<string,int>::iterator i;
for(i=TIME.begin();i!=TIME.end();i++){
if(i->second>0){
cout<<i->first;
printf(" %.4f%%\n",i->second*100.0/n);
}
}
return 0;
}
超时代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
typedef struct Node{
struct Node *next;
string name;
int time;
}Node,*List;
int main(){
int n;
cin>>n;
cin.get();
string c;
List L=(List)malloc(sizeof(Node)),p;
L->next=NULL;
for(int i=0;i<n;i++){
getline(cin,c);
p=L;
while(p->next&&p->next->name<c){
p=p->next;
}
if(p->next&&p->next->name==c){
p->next->time++;
}
else{
List s=(List)malloc(sizeof(Node));
s->name=c;
s->time=1;
s->next=p->next;
p->next=s;
}
}
p=L->next;
while(p){
cout<<p->name;
printf(" %.4f%%\n",p->time*100.0/n);
p=p->next;
}
return 0;
}