uva 10420 - List of Conquests

这题写的好丑啊,这题感觉就是烦

1.先要把单词读到一个数组,并记录次数

2.对单词进行排序

虽然只有0.022s,感觉写的太丑了

不过这题温习了一下vector的用法,还有qsort的用法

 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 #include<algorithm>
 5 #include<stdio.h>
 6 #include<stdlib.h>
 7 #include<string.h>
 8 #define  MIN(a,b) ((a)>(b))?(b):(a)
 9 using namespace std;
10 vector<string> v_word;
11 vector<int> v_num;
12 typedef struct Node{
13     string s;
14     int num;
15 }Node;
16 int comp(const void *a,const void *b){
17     string l1=*((string*)a);
18     string l2=*((string*)b);
19     return strcmp(l1.c_str(),l2.c_str());
20     
21 }
22 int main(){
23     int n;
24     string l;
25     cin>>n;
26     getchar();
27     while(n--){
28         getline(cin,l);
29         int start=l.find(" ",0);
30         string word;
31         word.assign(l,0,start);
32         vector<string>::iterator result=find(v_word.begin(),v_word.end(),word);
33         if(result==v_word.end()){
34             v_word.push_back(word);
35             v_num.push_back(1);
36         }
37         else{
38             v_num[result-v_word.begin()]++;
39         }
40     }
41     vector<string>::iterator r1=v_word.begin();
42     vector<int>::iterator    r2=v_num.begin();
43     Node* qu=new Node[v_num.size()];
44     for(int i=0;r1!=v_word.end();i++,r1++,r2++){
45         qu[i].s=*r1;
46         qu[i].num=*r2;
47     }
48     qsort(qu,v_num.size(),sizeof(qu[0]),comp);
49     for(int i=0;i<v_num.size();i++)
50         cout<<qu[i].s<<" "<<qu[i].num<<endl;
51     //system("pause");
52 }

 

posted on 2013-12-25 13:44  云在心  阅读(185)  评论(0)    收藏  举报

导航