找水王

题目:

  三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。

如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

设计思想

  (1)顺序遍历列表,如果遍历到的帖子的作者的ID和列表的下一个帖子的作者ID相同,则有可能是水王,将ID记录,同时也将ID出现的次数记录,

  (2)当遍历到的ID出现不相同时则将这两个ID都剔除

  (3)如果记录的可能是水王的ID出现次数成为0,则寻找新的可能是水王的ID

代码实现

 1 package demo3;
 2 import java.util.Scanner;
 3 public class WaterKing {
 4     public static void main(String[] args) {
 5         int[] a = null;
 6         Scanner sc = new Scanner(System.in);
 7         System.out.print("帖子总个数:");
 8         int sum = sc.nextInt();
 9         a = new int[sum];
10         System.out.print("输入每个帖子的作者(ID):");
11         for (int i = 0; i < sum; i++) {
12             a[i] = sc.nextInt();
13         }
14         sc.close();
15         int n = 0;
16         int nid = -1;
17         for (int i = 0; i < a.length - 1; i++) {
18             if (n == 0) {
19                 if (a[i] == a[i + 1]) {
20                     n = 2;
21                     nid = a[i];
22                 } else {
23                     if ((i + 1) == a.length - 1) {
24                         nid = a[a.length - 1];
25                     }
26                 }
27                 i++;
28             } else {
29                 if (nid == a[i]) {
30                     n++;
31                 } else {
32                     n--;
33                 }
34             }
35         }
36         System.out.print("水王的ID : " + nid);
37     }
38 }
View Code

实现截图

 

个人总结

   刚开始写的时候,思路不对,后来和别人讨论的时候才知道自己想思考不全面,没有考虑到许多情况。对水王Id出现情况判断不准。

    通过这次实验,使我加深了对特殊问题一般化,找到其中的规律等的理解

posted @ 2017-04-18 16:51  Dmego  阅读(169)  评论(0编辑  收藏  举报