1.题目要求:三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子,坊间风闻该“水王”发帖数目超过了帖子数目的一半。如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
2.设计思想:我设置了一个数组来存放所有帖子的ID,其中出现次数最多的就是水王的ID。从数组第一个元素开始遍历,每当遇到两个不同的ID就删除它们,最后剩下的ID即为水王的ID,因为题目关键是水王的发帖数目超过帖子数目的一半。
3.总结:本题的关键是水王的发帖数目超过帖子数目的一半,要能够找去题目的关键,才能用简便的方法解决题目。
4.
public class searchwater { static Scanner input=new Scanner(System.in); //输入数组 public static void shuru(int id[],int n) { for(int i=0;i<n;i++) { id[i]=input.nextInt(); } } //每次删除两个不同的id,直到剩下的所有id都相同即为水王id public static int max2(int a[],int n) { int b=0,c=0; for (int i = 0; i < n; ++i) { if(b==0||c==0) { b=a[i]; c++; } else if(a[i]==b) c++; else c--; } return b; } public static void main(String []args) { System.out.println("输入id个数:"); int m=input.nextInt(); System.out.println("请输入所有id:"); int id[]=new int[30]; shuru(id,m); int a=max2(id,m); System.out.println("水王的id为:"+a); } }