寻找“水王”

一、问题描述

    •三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,

      他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。

    •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

二、思路

    根据水王发的帖子超过一半,故可以判断,则水王的排列在ID表中肯定是有连续的,使用“消消乐”的方法可以解决该问题,及连续相同的数字保留,不相同的消去

三、代码

 1 #include <iostream>
 2 using namespace std;
 3 #define Length 11                //设置最大长度为100
 4 int judge(int a[Length])
 5 {
 6     int flag;
 7     int count;                    //用来计录当前水王数目
 8     flag = a[0];
 9     for(int i = 0;i<Length;i++)
10     {
11         if(flag == a[i])            //如果当前水王与下一个数一样
12         {
13             flag = a[i];
14             count++;
15         }
16         else                        //如果水王与当前数目不一样
17         {
18             count--;                //消去一个水王数目与当前的数
19             if(count<1)
20             {
21                 flag = a[i+1];    //如果水王的数目小于1,则制定下一个ID为水王
22                 count = 1;        //count复位
23                 i++;
24             }
25         }
26     }
27     return flag;
28
29 }
30 int main()
31 {
32     int target;
33     int Array[Length] = {1,2,3,2,4,2,2,5,5,2,2};
34     printf("ID:");
35     for(int i=0;i<Length;i++)
36     {
37         cout<<Array[i]<<"endl;
38     }
39     target = judge(Array);
40     cout<<"水王ID:"<<target<<endl;
41     return 0;
42 }

四、运行结果

  

  五、心得体会

    该题关键在于先将count置1,将flag当做是ID表中的第一项,依次比较,当下一项与flag相等时,count++,如果是水王,这样在ID

  表的末尾时,count的值一定不为0(因为水王的ID数目大于ID表数目的一半)。

时间: 2024-12-17 11:29:22

寻找“水王”的相关文章

寻找水王

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

寻找“水王”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,如

课堂练习------寻找水王

•三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 1 #include<iostream.h> 2 int main() 3 { 4 int water; 5 int a[10]={1,5,2,5,3,5,4,5,5,5}; 6 int j,k=1

软件工程随堂小作业—— 寻找“水王”(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

软件工程——寻找水王

1.题目 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 2.思路 从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一,减到0后重新赋值 3.源码 #include "iostream.h" #define MAXSIZ