寻找水王续

一、题目要求

随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,

你能从发帖列表中快速找到他们吗?

二、设计思路

这次是求3个ID,而且他们发帖数各超过了总数的四分之一,所以再次用上次寻找水王实验的思想,消除不同ID号,只不

过得设置3个标记,复杂一点,可用数组表示。

三、代码

#include<iostream.h>
void ID_array(int l,int A[])
{

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

    {

        cin>>A[i];

    }

}
int main()
{
    int l;//长度
    int target[3]={0,0,0};
    int ID[3]={-1,-1,-1};
    cout<<"请输入的帖子数量:";
    cin>>l;
    int * shuiwang=new int [l];
    ID_array(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<<"水王一为:"<<ID[0]<<endl;
    cout<<"水王二为:"<<ID[1]<<endl;
    cout<<"水王三为:"<<ID[2]<<endl;
    return 0;
}

四、截图

五、总结

通过这次实验,将”消消乐“思想再次强化运用,虽然这次题目更复杂,但是技巧用的好也很容易实现。

时间: 2024-11-02 04:17:15

寻找水王续的相关文章

寻找水王

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

4月24号周五课堂练习:找水王续

一.题目要求 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半.如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 二.设计思路 三.程序代码 #include<

课堂作业值之寻找水王2

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

个人项目——找水王续

寻找论坛里的水王(续) 一.程序要求 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数目都超过了帖子总数目N的1/4.你能从发帖ID列表中快速找出他们的ID

课堂练习——查找水王续

一.设计思路 题目要求: 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?(参考核心代码) 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 设计思路:   

寻找“水王”01

1.设计思想 假设ID都在sw.txt中 首先,按行读取ID 其次,设置beforeID,记录前一个ID是什么,判断当前ID和beforeID是否相同:如果相同,得到水王ID:如果不同,将当前ID给beforeID,接着读取下一行. 最后,读取比较完最后一个ID,得到水王. (本题假设水王存在,所以不考虑没有水王) 2.代码实现 //2016-5-24 李娜 //根据ID号,寻找发帖数超过一半的“水王” #include<iostream> #include<fstream> #i

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

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

寻找水王01

设计思想: 每次从ID列表中删除两个不同的ID,不影响“水王的ID在剩余ID中仍然超过一半”这一事实,因此每次删除两个不同的ID,直到剩下的所有ID都相同,那么剩下的就是水王的ID.不断重复这个过程,时间复杂度为O(n). 具体实现: 具体编程的时候,使用一个candidate记录当前猜测的水王ID,一个count记录其累计次数,然后遍历整个ID列表,对于当前所考查的ID,如果和candidate相同,那么count++,如果不同,那么count--,这个“count--;”的动作就是“删除两个

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

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