三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 设计思想: 最简单的思路就是:统计每一个ID出现的次数,然后找出出现最多的ID就是水王。 第二种更优的思路就是:利用水王发帖次数大于一半,然后两两一消,从第一个数开始,如果等于它的下一位,number 1, 代码实现: 法一: public class ShuiW { /* 法一:统计每一个ID出现的次数 public static int tj(int[][] array,int number) { int sum = 0; for(int i = 0; i < array.length;i ) { if(array[i][1] == number) { sum = sum 1; } } return sum; } public static void main(String args[]) { int [][] a = {{1,1},{2,2},{3,5},{4,1},{5,5},{6,5},{7,5},{8,5},{9,5},{10,7}}; int[][] ID = new int[a.length][2]; for(int i = 0;i < a.length;i ) { ID[i][0] = tj(a,a[i][1]);次数 ID[i][1] = a[i][1];数 } int max = ID[0][0]; int p = 0; for(int j = 1 ; j < ID.length; j ) { if(ID[j][0] > max) { max = ID[j][0]; p = ID[j][1]; } } System.out.println("最多" max "次,数为" p); } } 法二: public static int find(int[] array) { int size = array.length; int result = 0; int number = 0; for (int i = 0; i < size; i ) { if (number == 0) { result = array[i]; number = 1; } else { if (result == array[i]) { number; } else { --number; } } } return result; } public static void main(String[] args) { int[] array = { 2, 3, 2, 3, 7, 3, 9,3, 6,3, 1,3, 4,3, 10,3,3 }; System.out.println("水王的ID:" find(array)); } 实现截图: 个人总结: 通过本次课堂练习,我得出一个重要的结论就是,一定要读懂题,将其分析透彻,自己一开始就是不懂利用水王发帖数目超过了帖子数目的一半这个条件以至于没有好的思路,后来经同学和老师提醒,才有了眉目。 来源:http://www./content-4-222201.html |
|