SCUT Training 20170913 Problem A

来源:互联网 发布:windows xp硬盘安装版 编辑:程序博客网 时间:2024/05/29 18:47

原题: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;}