http://poj.org/problem?id=2418 虽然给的训练题目是说trie树类的题目,我是按字符串处理来做的。题目的意思:先给出一下树木,然后统计这些树木的出现频率
输出的时候是按字典序输出的,保留4位小数
1 #include<stdio.h>
2 #include<algorithm>
3 #include<string.h>
4 #include<iostream>
5 using namespace std;
6 #define N 1000001
7 struct node
8 {
9 char str[40];
10 }a[N];
11 int cmp(node a,node b)
12 {
13 return strcmp(a.str,b.str)<0;
14 }
15 int main()
16 {
17 int i,j;
18 i=0;
19 while(gets(a[i].str)) i++;
20 sort(a,a+i,cmp); //对字符串进行排序从小到大排
21 double sum=1;
22 for(j=1;j<i;j++)
23 {
24 if(strcmp(a[j-1].str,a[j].str))
25 {
26 {
27 printf("%s %.4lf\n",a[j-1].str,(sum*100)/i);
28 sum=1;
29 }
30 if(j==i-1)printf("%s %.4lf\n",a[j].str,sum*100/i); // 控制最后一个树木的输出,刚开始就是这里错了
31
32 }
33 else if(j==i-1)
34 {
35 sum++;
36 printf("%s %.4lf\n",a[j].str,(sum*100)/i);
37 }
38 else sum++;
39 }
40 return 0;
41 }