解决方案 »

  1.   

    PS:楼主你写的是a[5][6]不是[6][5]……
      

  2.   

    按照算自己的规则写了一个:
    判断逻辑可以再优化  /**
         * 
         * @param w 横向位置,从0开始
         * @param h 纵向位置,从0开始
         * @return 返回上下左右包括自己共9个位置,有多少个与自己相同的数字
         */
        public int getNum(int w,int h){
         if(w<0||h<0||w>=a.length||h>=a[a.length-1].length){
         return -1;//输入的数字不合法
         }
         int num=0;//总数
         int find=a[w][h];//获取查询点
         //8次查询,首先是上一行
         if(w-1>=0&&h-1>=0&&find==a[w-1][h-1]){//左上角
         num++;
         }
         if(h-1>0&&find==a[w][h-1]){//上方
         num++;
         }
         if(w+1<a.length&&h-1>0&&find==a[w+1][h-1]){
         num++;
         }
         //中间一行
         if(w-1>=0&&find==a[w-1][h]){
         num++;
         }
         if(w+1<a.length&&find==a[w+1][h]){
         num++;
         }
         //下一行
         if(w-1>=0&&h+1<a[a.length-1].length&&find==a[w-1][h+1]){//左上角
         num++;
         }
         if(h+1<a[a.length-1].length&&find==a[w][h+1]){//上方
         num++;
         }
         if(w+1<a.length&&h+1<a[a.length-1].length&&find==a[w+1][h+1]){
         num++;
         }
         return num+1;//+1是等算上自己
        }