杭电OJ 1004 C++详解

思路:题目要求在一串字符串中输出个数较多的那个,采用string字符串,将每一个string放入vector容器中,两层for循环,依次比较是否相等,输出个数较多的,虽然时间复杂度为O(n²),但思路比较简单易懂

#include<string>
#include<iostream>  //cin输入的库函数
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
    int n,max,count,k;   //max记录每次输入次数最多的个数,count作为自增的指示
    string s;
    vector<string> vi;
    while(cin>>n&&n)  //输入n且n不为0
    {
        vi.clear();
        getchar();   //吸收换行
        max=0;
        for(int i=0;i<n;i++)
        {
            cin>>s;
            vi.push_back(s);   //输入s并放入容器中
        }
        vector<string>::iterator it=vi.begin();  通过迭代器访问,it指示容器中第一个元素的位置
        for(int i=0;i<n;i++)  
        {
            count=0;
            for(int j=0;j<n;j++)   //容器中每个s都和所有的s比较一遍
            {
                if(*(it+i)==*(it+j)) count++;  //如果有相等的元素,count++
            }
            if(count>max)   //如果相等元素的个数大于max,则将count赋值给max
            {
                max=count;
                k=i;    //记录此时i的位置
            }
        }
        cout<<*(it+k)<<endl;   输出第k个元素的内容并换行
    }
    return 0;
}

发布了28 篇原创文章 · 获赞 7 · 访问量 1179

猜你喜欢

转载自blog.csdn.net/weixin_44433678/article/details/97307939