1004let the balloon rise

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

*/

如果您对本文满意,请回复,谢谢^ . ^ . ^ . ^

同时欢迎提出不同意见,以帮助我改进,不胜感激!!!

——桑海整理


你可能感兴趣的:(1004let the balloon rise)