三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
一、设计思路
本次实验练习与上次比较相似,所以通过类似于“两两相消”的方法,标记并找出出现次数最多的三个数。
二、程序源代码
package test; import java.util.*; public class shuiwang2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入数组的长度:"); int length = input.nextInt(); int[] id = new int[length]; System.out.println("请输入数组:"); for(int i=0;i<length;i++) { id[i] = input.nextInt(); } int id1=0,id2=0,id3=0; int t1=0,t2=0,t3=0; for(int i=0;i<length;i++) { if(t1==0 && id[i]!=id2 && id[i]!=id3) { id1=id[i]; t1++; } else if(t2==0 && id[i]!=id1 && id[i]!=id3) { id2=id[i]; t2++; } else if(t3==0 && id[i]!=id1 && id[i]!=id2) { id3=id[i]; t3++; } else if(id[i]!=id1 && id[i]!=id2 && id[i]!=id3) { t1--; t2--; t3--; } else if(id[i]==id1) { t1++; } else if(id[i]==id2) { t2++; } else if(id[i]==id3) { t3++; } } System.out.println("水王的id分别是:" + id1 + "," + id2 + "," + id3); } }
三、结果截图
四、个人总结
本次实验与上次较为相似,主要思路的稍微转化。在做其他的程序的时候,我们也应当有这样的注意。