1:
用容器和迭代器做:
注意:代码提交时可以有注释,但是格式一定要正确,另外不能有多余的输出,只能有题目要求的结果
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
int n;
while(cin >> n, n != 0)
{
vector<string> svec;
vector<string>::iterator iter1 = svec.begin();
vector<int> ivec(100, 0);
vector<int>::iterator iter2 = ivec.begin();
string colour;
// cout << "Enter the cases: " << endl; //多余的输出
// cout << "Enter each balloon's colour: " << endl;//多余的输出
{
cin >> colour;
vector<string>::size_type ix;
for(ix = 0, iter1 = svec.begin(); iter1 != svec.end(); ++iter1, ++ix)
if(*iter1 == colour)
break;
(*(iter2 + ix))++;
if(iter1 == svec.end())
svec.push_back(colour); //容器中没有该种颜色的话,插入该颜色,并且同步int容器对应值加1;
}
vector<int>::size_type ix, index, max;
for(ix = 0, index = 0, max = *iter2 ,iter2 + 1; *iter2 != 0; ++iter2, ++ix)
if(*iter2 > max)
{
max = *iter2;
index = ix;
}
//cout << "The most colour is: " << *(svec.begin() + index) << endl;//中间有多余的输出
cout << *(svec.begin() + index) << endl;
/ *要是有相同数目的颜色时,加上如下代码,带本题不用加
for(ix = 0, iter2 = ivec.begin(); *iter2 != 0; ++iter2, ++ix)
if(*iter2 == max && ix != index)
// cout << "The most colous is: " << *(svec.begin() + ix) << endl;
cout << *(svec.begin() + ix) << endl;
*/
}
return 0;
}
2:用容器和下标做:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
int n;
while(cin >> n, n != 0)
{
// cout << "Enter n cases: " << endl; //多余输出
vector<string> svec;
vector<int> ivec(1000,0);
string colour;
while(n--)
{
cin >> colour;
vector<string>::size_type index = 0;
for(; index != svec.size(); ++index)
if(svec[index] == colour)
break;
ivec[index]++;
if(index == svec.size()) //容器中不存在该输入颜色,更新容器,并使int容器同步增1;
svec.push_back(colour);
}
vector<int>::size_type ix = 0, index1 = 0, max = ivec[0];
for(; ix != svec.size(); ++ix)
if(ivec[ix] > max )
{
max = ivec[ix]; //更新max
index1 = ix; //更新index1
}
// cout << "The most colour is: " << svec[index1] << endl;
cout << svec[index1] << endl;
/*考虑有相同颜色
for(ix = 0; ix < ivec.size(); ++ix)
if(max == ivec[ix] && ix != index1)
cout << "The most colour is: " << svec[ix] << endl;
*/
}
return 0;
}
3:C风格写法
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
int main()
{
int n;
//cout << "Enter n cases: " << endl;
while(cin >> n, n != 0)
{
char str[1000][16], colour[16];
int a[1000] = {0};
int index = 0;
while(n--)
{
cin >> colour;
int ix = 0, flag = 0;
for( ; ix != index; ++ix)
if(strcmp(str[ix], colour) == 0)
{
flag = 1;
break;
}
++a[ix];
if(!flag)
{
strcpy(str[ix], colour);
++index;
}
}
int ix = 0, max = a[0], max_index = 0;
for(; ix != index; ++ix)
if(a[ix] > max)
{
max = a[ix];
max_index = ix;
}
//cout << "The most colour is: " << str[max_index] << endl;
cout << str[max_index] << endl;
}
return 0;
}
/*
测试实例:
5
green
red
blue
red
red
3
pink
orange
pink
0
*/
如果您对本文满意,请回复,谢谢^ . ^ . ^ . ^
同时欢迎提出不同意见,以帮助我改进,不胜感激!!!
——桑海整理