题目:http://poj.org/problem?id=2418
在poj 上交题总是有各种错误,再次感叹各个编译器。
c++ AC代码,G++为超时,上代码:
1 #include<cstdio> 2 #include<string> 3 #include<map> 4 using namespace std; 5 6 char s[100]; 7 int main() 8 { 9 map<string,int>mp; 10 map<string,int>::iterator iter;//声明迭代器 11 int sum=0; 12 while(gets(s)!=NULL) 13 { 14 mp[s]++; 15 sum++; 16 } 17 iter=mp.begin(); //相当于指针 18 while(iter!=mp.end()) 19 { 20 printf("%s %.4f ",iter->first.c_str(),100.0*iter->second/sum); //.c_str() 是把字符串转换成能c能输出的 21 iter++; 22 } 23 return 0; 24 } 25
这个代码是我第一次写的,不知道为什么 刚开始用了很多头文件,G++ wrong, c++ 编译错误
现在是 改了头文件后的 AC代码
1 #include<cstdio> 2 #include<string> 3 #include<iostream> 4 #include<map> 5 using namespace std; 6 7 char s[100]; 8 int main() 9 { 10 map<string,int>mp; 11 map<string,int>::iterator iter; 12 int i,sum=0; 13 while(gets(s)!=NULL) 14 { 15 mp[s]++; 16 sum++; 17 } 18 iter=mp.begin(); 19 while(iter!=mp.end()) 20 { 21 cout<<iter->first; 22 printf(" %.4lf ",100*1.0*iter->second/sum); 23 iter++; 24 } 25 return 0; 26 } 27
吸取教训,以后 交c++,少用头文件