实验题目:
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
设计思想:
由于水王的发帖数目超过总帖子数目的一半而且已知所有帖子的ID,所以可以这样:遍历,如果两个ID不同,则消除,这样最后剩下的相同的ID就是水王的ID。
代码:
1 import java.util.Scanner; 2 public class TheKingOfWater { 3 4 public static void main(String[] args) { 5 // TODO Auto-generated method stub 6 Water w = new Water(); 7 w.setLength(); 8 w.findWater(); 9 } 10 11 } 12 class Water 13 { 14 String id[]; 15 int length; 16 void setLength()//输入总帖数 17 { 18 System.out.println("请输入总帖数"); 19 Scanner l = new Scanner(System.in); 20 length = l.nextInt(); 21 } 22 void findWater() 23 { 24 id = new String [length]; 25 System.out.println("请输入id"); 26 for(int i=0;i<length;i++) 27 { 28 Scanner s = new Scanner(System.in); 29 id[i] = s.nextLine(); 30 } 31 String m = "0"; 32 int n = 0; 33 for(int i=0;i<length;i++) 34 { 35 if(n==0) 36 { 37 m = id[i]; 38 } 39 else if(id[i]==m) 40 n++; 41 else 42 n--; 43 } 44 System.out.println("水王ID为:"+m); 45 } 46 }
实验截图:
个人总结;
id类型应为字符串,在数据中寻找大部分的那部分可采用消除的方法。