• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
野野
博客园    首页    新随笔    联系   管理    订阅  订阅
寻找水王程序二

题目:

在上一次的程序中 信息学院的论坛里面,有一大“水王”不见了。出现了三个小水王,每个人的发帖数都超过了1/4。

思路:

还是上次消除的思想,我定义了三个计数器和三个初始嫌疑水王,比较三个ID,如果不相同,就排除,如果相同,那么计数器加一。嫌疑水王ID都与其它水军ID进行消除最后剩下的就是三个水王。

代码:

#include "iostream"
using namespace std;

typedef int Type;
	 
Type find(Type *shuiwang  ,int length)
{
    int Idcou[3]={0,0,0};//计数器初始化为0
    int ID[3]={0,0,0};     //水王id初始化为0 

    for(int i=0;i<length;i++)//找水王
    {
        if(Idcou[0]==0 && shuiwang[i]!=ID[1] && shuiwang[i]!=ID[2])    //三个数两两相比如果不相等则消去
        {
            Idcou[0]=1;
            ID[0]=shuiwang[i];
        }
        else if(Idcou[1]==0 &&shuiwang[i]!=ID[0] && shuiwang[i]!=ID[2])
        {
            Idcou[1]=1;
            ID[1]=shuiwang[i];
        }
        else if(Idcou[2]==0 &&shuiwang[i]!=ID[0] && shuiwang[i]!=ID[1])
        {
            Idcou[2]=1;
            ID[2]=shuiwang[i];
        }

        else if(shuiwang[i]!=ID[0] && shuiwang[i]!=ID[1] && shuiwang[i]!=ID[2]) //四个数若是不想等,则删除这四个数
        {
            Idcou[0]--;
            Idcou[1]--;
            Idcou[2]--;
        }
        else if(shuiwang[i]==ID[0])
        {
            Idcou[0]++;
        }
        else if(shuiwang[i]==ID[1])
        {
            Idcou[1]++;
        }
        else if(shuiwang[i]==ID[2])
        {
            Idcou[2]++;
        }       
    }

	cout<<"三个小水王分别是:"<<ID[0]<<"   "<<ID[1]<<"    "<<ID[2]<<endl;	
    return 0;
}

int main()
{  
	Type shuiwang[] ={1,1,1,1,1,1,3,3,3,3,3,45,3,41,2,2,2,2,2,2};
	find(shuiwang,20);
	return 0;
}

  

 

posted on 2016-05-23 18:57  野野  阅读(184)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3