标签:tor pre hdu iostream return names map div 输出
题意:给出n组字符串,判断哪一个字符串出现的次数最多,并输出该字符串。当n=0时,表示结束。
1.运用c++里的string数组来处理。再定义一个计数的数组,初始化0,两个for循环,出现一次相同加1,然后再比较一下
哪个最大,记录下标就ok了。
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 int main(){ 6 string s[1001]; 7 int a[1001]; 8 int n; 9 while(cin >> n&&n){ 10 for(int i=0;i<n;i++){ 11 cin >> s[i]; 12 a[i]=0; 13 } 14 for(int i=0;i<n;i++){ 15 for(int j=0;j<n;j++){ 16 if(s[i]==s[j]) 17 a[i]++; 18 } 19 } 20 int max=0,k; 21 for(int i=0;i<n;i++){ 22 if(a[i]>max){ 23 max=a[i]; 24 k=i; 25 } 26 } 27 cout << s[k] << endl; 28 } 29 return 0; 30 }
2.还有一种是网上的思路:排序完再累加上去,比较。
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 6 int main(){ 7 int n; 8 while(cin >> n&&n){ 9 string s[1010]; 10 int num[1010]; 11 for(int i=0;i<n;i++){ 12 cin >> s[i]; 13 num[i]=1; 14 } 15 sort(s,s+n); 16 int max=0; 17 for(int i=1;i<n;i++){ 18 if(s[i]==s[i-1]) 19 num[i]=num[i]+num[i-1]; 20 if(num[i]>=num[max]) 21 max=i; 22 } 23 cout << s[max] << endl; 24 } 25 return 0; 26 }
3.还有一种用map的(虽然看得一脸懵比,但是还是先记下来)
1 #include <iostream> 2 #include <string> 3 #include <map> 4 using namespace std; 5 6 int main(){ 7 map<string, int> Ballon; 8 string color, MaxColor; 9 int n, max; 10 while(cin>>n&&n){ 11 Ballon.clear(); 12 while(n--){ 13 cin>>color; 14 Ballon[color]++; 15 } 16 map<string, int>::iterator it; 17 max = 0; 18 for(it=Ballon.begin(); it!=Ballon.end(); it++){ 19 if(it->second>max){ 20 max = it->second; 21 MaxColor = it->first; 22 } 23 } 24 cout<<MaxColor<<endl; 25 } 26 return 0; 27 }
HDU - 1004 Let the Balloon Rise
标签:tor pre hdu iostream return names map div 输出
原文地址:http://www.cnblogs.com/Leonard-/p/6366969.html