寻找水王程序二

题目:

在上一次的程序中 信息学院的论坛里面,有一大“水王”不见了。出现了三个小水王,每个人的发帖数都超过了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;
}

  

时间: 2024-10-13 15:58:56

寻找水王程序二的相关文章

寻找水王(二)

一.题目 三人行设计了一个灌水论坛.随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 二.设计思路 这次实验的思路与上一次的思路类似,通过“消消乐”的方式解决问题,不过这次水王的数量增加到了三个,所以比较的数量也会有所增加,而且要设置相应的变量来记录比较的过程. 三.源代码 #include<iostream.h> void Data(int l,int A[]); int main() { int

寻找水王程序一

题目 : 信息学院的论坛里面,有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子.风闻该“水王”发帖数目超过了帖子总数的一半. 如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能怎么样找出这个传说中的Tango水王吗? 思路: 我开始想到的思路是: 可以假设帖子的第一个ID是次数最大的. 遍历下一个ID,如果跟第一个一样,就++,否则,遇到一个不是水王发的帖子,将这个帖子与水王发的一个帖子删掉,也就是--,如果 == 0,那么说明当前的候选不是水王,假设

寻找水王

一.设计思路 1.我采用的方法是两两计算抵消的想法,相邻的两个ID依次比较. 2.计数器用来表示水王出现的次数.默认当计数器为0时,水王就是当前的ID,因此水王出现一次,计数器从0加1,然后比较后一个ID,如果相同,意味着水王又出现一次,计数器就自加1:如果不同,意味着水王没有出现第二次,直接抵消,计数器就减1.当计数器为0,水王又是当前ID,依次循环. 二.代码 //2016/5/18 信1301-1 黄山成 20133048 寻找水贴王的ID #include<iostream> usin

寻找水王续

一.题目要求 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4, 你能从发帖列表中快速找到他们吗? 二.设计思路 这次是求3个ID,而且他们发帖数各超过了总数的四分之一,所以再次用上次寻找水王实验的思想,消除不同ID号,只不 过得设置3个标记,复杂一点,可用数组表示. 三.代码 #include<iostream.h> void ID_array(int l,int A[]) { cout<<"请输入ID序列:

课堂作业值之寻找水王2

随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗 设计 思想: 与上次寻找水王一样,这次将与三个水王不同的ID都消除掉,剩下的就是三个水王的ID 程序源代码: import java.util.Scanner;public class shuiwang2 { public static void main(String args[]) { Scanner scanner=new Scanner(Syst

win32SDK的hello,world程序(二)

接上篇,原生的控件都不太好看,所以决定自己画一个,稍微处理下消息就能用了.不过,美化这东西是需要天赋的.即使技术再好,没有对UI布局调整和良好的审美能力,做出来的东西还是很挫. 主要把消息逻辑和画的过程写出来: LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static bool b; switch (message) /* handle the message

phpcms程序二次开发记录

1. phpcms/base.php 中的 pc_base 类 静态类,主要加载各个文件使用.2. pc_base 中 load_sys_func 等带 sys的函数,基本都是加载 lib下文件. func加载functions下: class 加载 class下3. pc_base 中 函数一般第一个参数为文件名,第二个参数为路径,第3个参数有一般为:加载类是否实体化4. pc_base 中 load_app开头则为加载modules下的 functions和class等5. 网站开始入口控制

房地产—客户关系管理系统CRM|软件开发|软件外包|程序二次开发

房地产—客户关系管理系统CRM|软件开发|软件外包|程序二次开发 主要:CRM管理,合同管理,绩效管理 1.CRM管理:新增客户,我的资源,公共资源,客户跟进,待审批客户,报备资源,审核释放,预约到访. 2.合同管理:查询合同,新增合同. 3.绩效管理:新增考核指标,考核进度跟踪,指标进度完成. 为了帮助地产企业秉承专业.人本精神,将客户服务工作持续贯彻于房地产开发的全过程,在产品策划阶段和工程管理阶段,预见性的提供客户需求的产品,将客户服务前置:在销售和售后服务阶段,预见性的为客户提供人性化的

小程序二维码生成接口API

获取小程序码 我们推荐生成并使用小程序码,它具有更好的辨识度.目前有两个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口. 接口A: 适用于需要的码数量较少的业务场景 接口地址: https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN 获取 access_token 详见文档 POST 参数说明 注意:通过该接口生成的小程序码,永久有效,数量限制见文末说明,请谨慎使用.用户扫描该码进入小程序后,将直接进入