软件工程练习——找水王

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

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

1.设计思想

   因为“水王”发帖数超过了一半,将相邻两两不同的ID消除,则剩下的为“水王”的ID。用一个一维数组a[]存储所有ID,令“水王”ID为数组中的第一个a[0],用一个整型j记录水王ID出现次数,相邻数比较相同则j++,不同则j- -,并且如果j<=0,则对水王换ID,进行循环判断,直至循环结束。

源代码:

 1 package shuiwang;
 2 import java.util.*;
 3 
 4 public class Find_shuiwang {
 5 
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         Find_function function = new Find_function();
 9         Scanner sca=new Scanner(System.in);
10         System.out.println("输入帖子数:");
11         int n=sca.nextInt();
12         String post[]=new String[n+1];
13         
14         int i;
15         System.out.println("输入帖子ID:");
16         for(i=0;i<n+1;i++)
17         {
18               post[i]=sca.nextLine();
19         }
20         String shuiwang = function.find(post, n);
21         System.out.println("水王ID是 " + shuiwang);
22     }
23 
24 }
main
 1 package shuiwang;
 2 
 3 public class Find_function {
 4     String find(String[] post,int n)
 5     {
 6         int i,j = 0;
 7         String shuiwang = post[0];//令第一个ID为水王
 8         for(i=0;i<n;i++)
 9         {            
10             if(!shuiwang.equals(post[i]))
11                 {
12                     j=j-1;
13                     if(j<=0)    //如果j=0时,之前的ID一定有一半以上不是水王,所以消去的至多有一半水王
14                        {
15                           shuiwang=post[i+1];    //在剩下的ID中继续寻找
16                           j=1;        //重新定义水王ID出现次数
17                           i++;
18                         }
19                 }
20             else
21                 {
22                     shuiwang=post[i];
23                     j=j+1;//水王帖子数
24                 }            
25         }
26         return shuiwang;
27     }
28 }
Find_function

结果截图:

原文地址:https://www.cnblogs.com/xiaosongbiog/p/5503655.html