标签:map space 初始化 memory val number sort排序 enter size_t
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 120507 Accepted Submission(s): 47270
#include <iostream> #include<stdlib.h> #include<string> #include<map> #include<vector> #include<algorithm> using namespace std; typedef pair<string,size_t> PAIR; //定义排序比较函数,通过value比较 bool cmp_by_value(const PAIR& lhs, const PAIR& rhs) { return lhs.second > rhs.second; } int main(void) { int n; map<string,size_t>color_balloon; string * input_str; while(cin>>n&&n) { input_str=new string[n];//为输入的颜色分配空间 for(int i=0;i<n;i++) { cin>>input_str[i]; ++color_balloon[input_str[i]];//提取input_str[]计数器并对其加1 } //把map中元素转存到vector中 vector <PAIR> color_str_vec(color_balloon.begin(),color_balloon.end()); //按降序排序 sort(color_str_vec.begin(),color_str_vec.end(),cmp_by_value); //color_str_vec已经按照降序排序,输出第一个即为出现次数最多的一个 cout<<color_str_vec[0].first<<endl; //必须清空 color_balloon.clear(); delete [] input_str; } return 0; }
代码中知识参考:
思路供给:http://blog.csdn.net/always2015/article/details/44975799
map的比较函数那个知识,还有pair转化为vec的用法:http://www.cnblogs.com/fengting/p/5847347.html
第二种:
我用两个数组,一个数组用来存放字符串,一个数组用来存放对应字符串的出现次数。然后算法实现基本为:输入一个字符串,我先在之前的存入的字符串中找。如果找到了,那么该字符串对应的num++,如果找不到,那就把这个字符串作为一个新的字符串插入到字符串数组中,并且其num[i]++(从0变为1)。然后就是简单的排序输出。这个思路还是很清晰的。代码如下:
#include <iostream> #include<math.h> #include <iomanip> #include<cstdio> #include<string> #include<map> #include<vector> #include<list> #include<algorithm> #include<stdlib.h> #include<iterator> #include<sstream> #include<string.h> using namespace std; int main() { int n; while(cin>>n) { string input[1002];//初始化最好在循环里弄 没那么多屁事 for(int u=0;u<1002;u++) input[u]=" "; int num[1002]={0}; string temp; int i,j; for(i=0;i<n;i++)//开始实现算法 { cin>>temp;//读一个字符串 for(j=0;j<i;j++)//在已经输入的 字符串数组中找 有没有一样的 { if(temp==input[j]) { num[j]++;//有的话 对应的下标++ !!!!注意 这边是J++ 因为是在已经存在的数组中找 break; } } if(i==j)//找不到 说明 没有 那就是多了一种颜色 那就要把新颜色加入到数组中去 { input[i]=temp; num[i]++;//然后别忘记对应的 数字++ } } int max=0; for(i=0;i<n;i++)//排序 { if(num[i]>num[max]) { max=i; } } cout<<input[max]<<endl;//输出 } return 0; }
标签:map space 初始化 memory val number sort排序 enter size_t
原文地址:http://www.cnblogs.com/William-xh/p/6901200.html