一:程序设计背景
随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
二:设计思想
此问题跟找水王1类似,只不过从1:1的消除变成了3:1的消除,其他的count加法都类似。
三:代码实现
//寻找水王2 //信1405-1班 20142966 黄伟鹏 import java.util.Scanner; public class find2 { public static void main(String[] args) { int i,Number; System.out.println("请输入帖子总数:"); Scanner in=new Scanner(System.in); Number=in.nextInt(); int list[]=new int[Number]; //定义一个长度为帖子长度的数组 int count[]=new int[3]; //定义一个分别对三个水王重复值进行计数的数组 int middle[]=new int[3]; //定义一个分别对三个水王进行赋值的中间数组 System.out.println("请输入帖子的ID"); Scanner t=new Scanner(System.in); for(i=0;i<Number;i++) //将帖子ID赋值给数组 { list[i]=t.nextInt(); } for(i=0;i<3;i++) //将计数数组初始化 { count[i]=0; } for(i=0;i<Number;i++) { if(middle[0]==list[i]) { count[0]++; } else if(middle[1]==list[i]) { count[1]++; } else if(middle[2]==list[i]) { count[2]++; } else if(count[0]==0) { count[0]++; middle[0]=list[i]; } else if(count[1]==0) { count[1]++; middle[1]=list[i]; } else if(count[2]==0) { count[2]++; middle[2]=list[i]; } else { count[0]--; count[1]--; count[2]--; } } System.out.println("第一个水王的ID是 : "+middle[0]); System.out.println("第二个水王的ID是 : "+middle[1]); System.out.println("第三个水王的ID是 : "+middle[2]); } }
四:实现截图
五:个人总结
此题有数种方法可以实现,但题中要求快速找到即算法简便,只要将帖子数最多的ID找到即可。