个人作业—找水王2

题目要求:

             随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。

据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?

设计思路:

              

1、输入总帖子数x

2、定义一个一维数组a[x],为作者id。设置循环输入作者id

3、定义三个小水王,以及其净帖子数

4、再设置一个循环,按照顺序来依次进行比较,如果净帖子数大于0则作者id不变,如果作者id等于0,则将此id作为新的小水王id,如此循环x次

5、最后剩余的作者id即为水王id

源程序:

 1 import java.util.Scanner;
 2
 3
 4 public class water {
 5
 6     public static void main(String[] args) {
 7         // TODO 自动生成的方法存根
 8         System.out.println("共有多少个帖子(请输入大于3的数)");
 9         Scanner input =new Scanner(System.in);
10         int x=input.nextInt();
11         String a[]=new String[x];
12         //发帖子情况
13         for(int i=0;i<x;i++)
14         {
15             System.out.println("请输入第"+(i+1)+"个帖子的作者id");
16             Scanner input1 =new Scanner(System.in);
17             a[i]=input1.nextLine();
18         }
19         //找水王
20         String s1="";//小水王1
21         String s2="";//小水王2
22         String s3="";//小水王3
23         int c1=0;
24         int c2=0;
25         int c3=0;//c1,c2,c3分别是小水王最后净帖子数,如果c1,c2,c3不是正数则不是水王
26         for(int i=0;i<x;i++)
27         {
28            if(s1.equals(a[i]))//如果相等净帖子数加1
29            {
30                c1++;
31            }
32            else if(s2.equals(a[i]))
33            {
34                c2++;
35            }
36            else if(s3.equals(a[i]))
37            {
38                c3++;
39            }
40            else if(c1==0)
41            {
42                s1=a[i];
43            }
44            else if(c2==0)
45            {
46                s2=a[i];
47            }
48            else if(c3==0)
49            {
50                s3=a[i];
51            }
52            else//如果都不相等净帖子数均减1
53            {
54                c1--;
55                c2--;
56                c3--;
57            }
58         }
59         System.out.println("水王是"+s1+" "+s2+" "+s3);
60     }
61
62 }

运行截图:

结果分析:这次要寻找三个小水王,为了避免其重复,所以初始化要通过循环来进行,将三个小水王按照循环进行的顺序初始化为最先出现的三个不同的id;这样就不能将净帖子数初始化为1,需初始化为0,只有为小水王赋新值时才能将其置为1.

时间: 2024-11-10 01:04:02

个人作业—找水王2的相关文章

课堂作业找水王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)输出结果 源代码

课堂练习之找水王

1.设计思想: 主题思路就是删除ID,每当遇到不同的ID,则删除上一个作为对比对象的ID,依次遍历所有的ID,最后剩下的那个一定是水王. 2.代码设计: //找水王,王昭博. #include <iostream> using namespace std; void main() { int num,ID[100]; cout<<"请输入帖子的数量:"; cin>>num; int i; cout<<"请依次输入帖子对应的ID号

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

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

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

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

课堂作业:找“水王”

三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个"水王",他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该"水王"发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 1.设计思想:由于"水王"发帖数目超过帖子总数一半,所以每次删除两个不同的ID,直到剩下的所有ID都相同,那么最后剩下的就是水王的ID. 2.代码: pa

找水王1

三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 设计思想: 这是一个查找数组中出现频率最高值的问题,不一样的是已知条件中有一点为出现频率最高值出现频率大于0.5. 按照常规思路可以逐个统计出现过的每个ID出现过的次数.本次作业要求新思路,即 1.计第一

随堂练习--找水王2

问题描述: 在上一次练习的基础上,大水王消失了,出现了3个小水王,且每个水王发帖的数量都超过1/4.找出3水王 解决思路: 这1次我们可以通过六个变量来推导出三水王,每两个代表一个水王,其中一个表示 ID,另一个用来使用消除法抵消次数,因为每个水王发帖量都超过1/4,所以一遍运行下来,三水王的ID出现次数都不会被抵消 #include<iostream>#include<string>using namespace std; int main(){    string tieba[