原题:http://acm.hdu.edu.cn/showproblem.php?pid=1004
思路:
水题,定义一个struct类(包含一个名为name的string类和名为count的int类)并定义栈,用p记录栈顶元素的位置。逐行读入并按线性顺序比较,若名字相同则a[i].count++;反之p++并记录名字和次数。最后输出最大的即可。
源代码:
#include <iostream> #include <string> using namespace std; struct x { string name; int count; }; x a[1001]; int judge(int lim) { int ans=0; int m=0; for (int i=1;i<=lim;i++) if (a[i].count>m) { m=a[i].count; ans=i; } return ans; } int main() { int n,m,p=0; string s; char c; bool ne; cin>>n; while (n!=0) { m=0; p=0; ne=true; for (int i=1;i<=n;i++) { cin>>s; for (int j=1;j<=p;j++) if (a[j].name==s) { ne=false; a[j].count++; break; } if (ne) { p++; a[p].name=s; a[p].count=1; } ne=true; } m=judge(p); cout<<a[m].name<<endl; cin>>n; } return 0; }