题目大概:
要求输入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