zoukankan      html  css  js  c++  java
  • 课堂练习-找水王

    题目:

    三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
    如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

    设计思想:

    最简单的思路就是:统计每一个ID出现的次数,然后找出出现最多的ID就是水王。

    第二种更优的思路就是:利用水王发帖次数大于一半,然后两两一消,从第一个数开始,如果等于它的下一位,number+1,
     如果不等于,number-1,不等于相当于把这两个帖子都删除,直接从这两个的后一个开始。
     最后由于水王发帖数大于一半,不管怎样,它肯定会被剩下,从而得出水王ID。

    代码实现:

    法一:

    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));  
    			    }  			  
    

      

    实现截图:

    法1:

     法2.:

    个人总结:

    通过本次课堂练习,我得出一个重要的结论就是,一定要读懂题,将其分析透彻,自己一开始就是不懂利用水王发帖数目超过了帖子数目的一半这个条件以至于没有好的思路,后来经同学和老师提醒,才有了眉目。

  • 相关阅读:
    JSP指令用来设置整个JSP页面相关的属性
    JSP 生命周期 理解JSP底层功能的关键就是去理解它们所遵守的生命周期
    JSP 开发环境搭建
    JSP(Java Server Pages,即:Java服务器页面
    JSP 国际化
    JSP 调试
    JSP 异常处理
    JSP 自定义标签
    JSP JavaBean
    JSP 标准标签库(JSTL)
  • 原文地址:https://www.cnblogs.com/zzstdruan1707-4/p/10963185.html
Copyright © 2011-2022 走看看