码迷,mamicode.com
首页 > 其他好文 > 详细

随堂练习--找水王2

时间:2016-06-04 00:22:00      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

在上一次练习的基础上,大水王消失了,出现了3个小水王,且每个水王发帖的数量都超过1/4.找出3水王

 

解决思路:

 这1次我们可以通过六个变量来推导出三水王,每两个代表一个水王,其中一个表示 ID,另一个用来使用消除法抵消次数,因为每个水王发帖量都超过1/4,所以一遍运行下来,三水王的ID出现次数都不会被抵消

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string tieba[] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "W", "V" };
    int court[3] = { 0 };  //用于计数
    int ID[3] = { 0, 1, 2 };         //记入ID
    /*
    使用消去法,读入一个ID,与ID数组相比较。
    1、ID数组中含有对应ID则相应court+1;
    2、如果对应数组ID都没有与之对应,那么查看是否有ID对应court==0,如果有则替换对应ID;
    3、条件一和条件二都没有满足则,court数组都减1;
    */
    for (int i = 0; i<sizeof(tieba) / sizeof(tieba[0]); i++)
    {
        if (tieba[ID[0]] == tieba[i])
        {
            court[0]++;
        }
        else if (tieba[ID[1]] == tieba[i])
        {
            court[1]++;
        }
        else if (tieba[ID[2]] == tieba[i])
        {
            court[2]++;
        }
        else if (court[0] == 0)
        {
            ID[0] = i;
        }
        else if (court[1] == 0)
        {
            ID[1] = i;
        }
        else if (court[2] == 0)
        {
            ID[2] = i;
        }
        else
        {
            court[0]--;
            court[1]--;
            court[2]--;
        }
    }
    for (int i = 0; i<3; i++)
    {
        cout << "第 " << i + 1 << " 个水王是:" << tieba[ID[i]] << endl;
    }
    return 0;
}

 运行结果截图:

技术分享

随堂练习--找水王2

标签:

原文地址:http://www.cnblogs.com/X-knight/p/5557826.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!