课堂作业:找“水王”

三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

1.设计思想:由于“水王”发帖数目超过帖子总数一半,所以每次删除两个不同的ID,直到剩下的所有ID都相同,那么最后剩下的就是水王的ID。

2.代码:

package shw;
import java.util.Scanner;

public class shw {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入ID的个数:");
        int n=sc.nextInt();
        int p[]=new int[n];
        System.out.println("请输入ID:");
        for(int i=0;i<n;i++)
        {
            p[i]=sc.nextInt();
        }
        int ID=find(p,n);
        System.out.println("水王是"+ID);
    }
    public static int find(int p[], int n)
    {
        int a=0,b=0;
        for (int i = 0; i < n; ++i)
        {
            if(a==0||b==0)
            {
                a=p[i];
                b++;
            }
            else if(p[i]==a)
                b++;
            else
                b--;
          }
         return a;
    }
}

3.实验结果截图:

时间: 2024-10-15 02:34:48

课堂作业:找“水王”的相关文章

课堂作业找水王2

找水王2: 超级水王没有了.统计结果表明,有3个发帖很多的ID ,他们的发帖数目都超过了帖子总数目N的1/4.你能从发帖ID列表中快速找出他们ID吗? 设计思想: 和上一次的思路同源,如果每次删除四个不同的ID(不管是否包含发帖数目超过总数1/4的ID),那么,在剩下的ID列表中,原先发帖比例大于1/4的ID所占比例仍然大于1/4,可以通过不断重复这个过程,把ID列表中的ID总数降低(转化为更小的问题),从而得到问题的答案. 代码实现: package test1; public class F

课堂作业-找水王2

1.题目要求: 随着论坛的发展,管理员发现水王没有了,但是统计结果表明, 有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 2.设计思路: 因为三个小水王的ID在所有发帖ID中均超过1/4,所以初始化水王的时候可以用4个ID相比.如果所有ID序列排列在1-4的四个ID中出现相同ID名,那么就可以利用一个包含三个元素的数组初始化小水王ID:如果所有ID序列排列在1-4中无重复ID名,则在排列在4-8中寻找是否存在重复的ID名.以此循环直到找到在4个ID中出现

课堂作业——找水王

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

个人作业—找水王2

题目要求:              随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID. 据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 设计思路:                1.输入总帖子数x 2.定义一个一维数组a[x],为作者id.设置循环输入作者id 3.定义三个小水王,以及其净帖子数 4.再设置一个循环,按照顺序来依次进行比较,如果净帖子数大于0则作者id不变,如果作者id等于0,则将此id作为新的小水王id,如此循环x次 5.最后剩

课堂作业——找“小水王”

一.程序要求 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 二.程序设计思想

课堂练习--“找水王续&quot;

设计思路: ①跟上次思路一样,将问题简化成从一个数组中找出出现次数最多的3个数. ②将“两两相消"的思路模式,变成“三一相消” ③初始化time为零,kingid为零,然后按顺序赋值,遇到跟kingid1相同的time1+1,其余两个同样:遇到跟三个都不同的所有time-1. 代码: import java.util.*; public class Findthreenum { public static void main(String[] args) { Scanner input = ne

课堂练习-找水王绪

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

软件工程课堂练习找水王s

题目:发现,“超级水王”没有了.统-计结-果表-明,有3个发帖很多的ID,他们的 数目都超过了 总数目N的1/4.你能从 ID列表中快速找出他们的ID吗? 思路:关联型容器可以很方便解决,php里的array就是关联型数组,php有很多方便的排序函数,所以本次用php实现. 首先对id列表进行遍历,以id为键值对数组$result进行赋值, 如果$result[$id]没有初始化,那么这就是第一次出现,即$result[$id]=1 如果$result[$id]已经初始化,那个发帖数加1,即$r

课堂作业——找水军

题目: 思路: 编程之美的扩展了这个问题,在求解找出一个“水王”的基础上进行补充分析,之前遍历数组的时候只用保存两个值:一个是数组中的ID,一个是它对应出现的次数.而这次需要找出3个ID(即输出3个结果),就需要另开辟新的数组来分别保存.首先保存前3个ID,每当遍历下一个ID的时候,先要判断下一个和当前保存的这3个ID是否有相同的,若有相同的则此ID对应的次数加1:若不同则次数减1.再判断如果有ID次数为零,就用下一个ID把它替换,并把次数设为1.与之前不同的是,可能会出现次数都不为0的情况,这

课堂测验-找水王

设计思想: 因为水王是每一贴必回,那么他的总数站在所有总数的一半以上,又因为这是一个贴吧的数据库,那么他的数据很多很多,这是一个大数据. 从基于他是个大数据,那么肯定误删很多东西,那么我们姑且将一个和他的后一个,进行比较,如果相同保留,如果不同,那么值为-1,就这样,为正的必是水王,或者绝大部分是水王. 代码: 1 package Findmax; 2 3 public class a2 { 4 public static void main(String[] args) { 5 // TODO