[设计思想]
因为水王是整个论坛中发帖和回帖数加起来最多的的人,且超过总帖数的一半以上。(这里将发帖数和回帖数记在一起)使用"两两相消"的方法。将帖子的作者id纳入数组,将数组中的一个数记作疑似水王者,并记发帖数t=0。遍历数组,若数组中的数和疑似水王者id相同,使发帖数t加一。如与疑似水王者id不同,使发帖数t减一。当t=0时,将数组中当前与水王疑似者比较的数作为新的疑似水王者。循环结束,当前水王怀疑者就是水王。
[代码实现]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import java.util.Scanner; public class KingOfWater { public static void main(String args[]){ int length; Scanner sc = new Scanner(System.in); System.out.println( "请输入总帖数:" ); length = sc.nextInt(); String Poster[] = new String[length]; System.out.println( "请输入每个帖子的发帖者:" ); for ( int i= 0 ;i<length;i++) { Poster[i] = sc.next(); } String suspect=Poster[ 0 ]; int t= 0 ; for ( int i= 0 ;i<length;i++) { if (suspect.equals(Poster[i])) { t+= 1 ; } else { t-= 1 ; } if (t== 0 ) { suspect = Poster[i]; t= 1 ; } } System.out.println( "事情的真相只有一个,TheKingOfWater是:" ); System.out.println(suspect); } } |
[实现截图]
原文:http://www.cnblogs.com/maplely/p/5513039.html