寻找水王(二)

一、题目

三人行设计了一个灌水论坛。随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?

二、设计思路

这次实验的思路与上一次的思路类似,通过“消消乐”的方式解决问题,不过这次水王的数量增加到了三个,所以比较的数量也会有所增加,而且要设置相应的变量来记录比较的过程。

三、源代码

#include<iostream.h>
void Data(int l,int A[]);
int main()
{
    int l;//长度
    int target[3]={0,0,0};
    int ID[3]={-1,-1,-1};
    cout<<"*********************************************************"<<endl;
    cout<<"请输入的帖子数量:";
    cin>>l;
    cout<<"*********************************************************"<<endl;
    int * shuiwang=new int [l];
    Data(l,shuiwang);
    for(int i=0;i<l;i++)
    {

        if(target[0]==0 && shuiwang[i]!=ID[1] && shuiwang[i]!=ID[2])
        {
            target[0]=1;
            ID[0]=shuiwang[i];
        }
        else if(target[1]==0 && shuiwang[i]!=ID[0] && shuiwang[i]!=ID[2])
        {
            target[1]=1;
            ID[1]=shuiwang[i];
        }
        else if(target[2]==0 && shuiwang[i]!=ID[0] && shuiwang[i]!=ID[1])
        {
            target[2]=1;
            ID[2]=shuiwang[i];
        }

        else if(shuiwang[i]!=ID[0] && shuiwang[i]!=ID[1] && shuiwang[i]!=ID[2])
        {
            target[0]--;
            target[1]--;
            target[2]--;
        }
        else if(shuiwang[i]==ID[0])
        {
            target[0]++;
        }
        else if(shuiwang[i]==ID[1])
        {
            target[1]++;
        }
        else if(shuiwang[i]==ID[2])
        {
            target[2]++;
        }

    }
    cout<<"*********************************************************"<<endl;
    cout<<"水王一为:"<<ID[0]<<endl;
    cout<<"水王二为:"<<ID[1]<<endl;
    cout<<"水王三为:"<<ID[2]<<endl;
    cout<<"*********************************************************"<<endl;
    return 0;
}
void Data(int l,int A[])

{

    cout<<"请输入ID序列:"<<endl;
    for(int i=0;i<l;i++)

    {

        cin>>A[i];

    }

}

四、实验截图

五、实验总结

这次的实验比较前一次又有了新一步的提高,在全局范围内找出多个而不是一个人。增加了难度,在原来的基础之上,进行了深入。其实思想还是大同小异,只是有一个弯儿,一开始怎么也想不出来。这次实验同学对我的帮助很大,我也是在借鉴的基础上完成的这个实验。

时间: 2024-10-13 18:50:18

寻找水王(二)的相关文章

寻找水王

一.设计思路 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序列:

寻找最大数(二)

寻找最大数(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 给你一个数字n(可能有前缀0). 要求从高位到低位,进行 进栈出栈 操作,是最后输出的结果最大. 输入 有多组测试数据. 对于每组数据,输入一个n(0<=n<=10^100). 输出 输出栈操作后的结果. 样例输入 789 75948 样例输出 987 98457 提示 (用0表示进栈,1表示出栈) 789 输出 987 过程是 000111 75948 输出 98457 过程是 000100111

课堂作业值之寻找水王2

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

寻找水王程序二

题目: 在上一次的程序中 信息学院的论坛里面,有一大“水王”不见了.出现了三个小水王,每个人的发帖数都超过了1/4. 思路: 还是上次消除的思想,我定义了三个计数器和三个初始嫌疑水王,比较三个ID,如果不相同,就排除,如果相同,那么计数器加一.嫌疑水王ID都与其它水军ID进行消除最后剩下的就是三个水王. 代码: #include "iostream" using namespace std; typedef int Type; Type find(Type *shuiwang ,int

软件工程课堂作业——寻找水王2

一.题目 随着论坛的发展,管理员发现“水王”没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了总和的1/4.你能从发帖列表中快速找到他们吗? 二.设计思想 根据三个水王号的ID数均超过四分之一可以知道只要非水王号出现一次,水王号ID必定都对应会出现一次.则目前判断为水王号的ID出现则对应次数加一,非水王号出现一次则目前判断为水王号出现次数的均减一.运用这种算法则需要判断输入的ID号是否符合条件,通过判断最终判断出来的ID号的出现的次数之差可以判断出是否满足“发帖数量超过了

软件工程课堂作业——寻找“水王”

一.题目 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 二.设计思想: 由于该“水王”发帖数目超过了帖子数目的一半,可以通过相邻两个帖子的作者ID是否相同来寻找.如果相邻两个ID不同,则将两个ID略过:若相等,则判断之前是否有怀疑是“水王”的ID,如

软件工程随堂小作业—— 寻找“水王”(C++)

一.设计思路 (1)输入发帖ID记录表 (2)从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一.若计数器的数值被减为零,则重新选取当前ID开始记录比较. (3)输出结果 二.源代码 1 // shuiwang.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 #include "iostream.h" 6 #def

课堂练习——寻找水王

一,题目 •三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 二,思路 思路1:因为各个人的id号大小不同,因此可将所有人的id号按照从小到大的顺序进行排序,用快速排序法,时间复杂度为:O(N*logN).然后遍历整个数组,统计每个id号出现的次数,出