acm书中题目 o-15

    xiaoxiao2021-03-25  73

    题目大概:

    要求输入n,随后输入n行数据,每行一种颜色英文,输出出现最多的颜色。

    思路:

    这个题用multiset集合做,会比较简单,用向量存储数据,放入集合中,然后用erase()函数删除数据并得到数据个数,比较个数,输出最多的颜色。

    感想:

    当做到这个题时,我终于感受到了stl的好用,这个题如果不用stl,就要用循环,字符串比较函数等等,慢慢比较计算最多的颜色,比较麻烦,时间复杂度也较大,用stl简单了很多很多。

    代码:

    #include <iostream> #include <vector> #include <set> #include <algorithm> #include <string> using namespace std; int main() {int n; while(cin>>n) { if(n==0)break; string b[1000]; int c,max=0,k=0; vector<string>a; multiset<string>aa; for(int i=0;i<n;i++) {cin>>b[i]; a.push_back(b[i]); aa.insert(b[i]); } for(int t=0;t<n;t++) {c=aa.erase(a[t]); if(c>max){k=t;max=c;} } cout<<a[k]<<endl; } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-34660.html

    最新回复(0)