扫描透镜

扫描透镜

http://www.nowcoder.com/questionTerminal/6a219d196df44d3abd82fbadb1a62c3f

需要看清题意。
1 一次只能清楚一个蘑菇,不管里面种了几个。
2 一个格子里面可以种无穷多个
3 第二次统计最大值需要考虑第一次的影响。

import java.util.*;
public class Main{
    public static void main(String[] args){
        int[][] path={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1},{0,0}};//循环3x3方格,搜索常用
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            int m=sc.nextInt();
            int k=sc.nextInt();
            int[][] nums=new int[n][m];
            for(int index=0;index<k;index++){ //定义数组,nums[x][y]表示种的蘑菇数量
                int x=sc.nextInt();
                int y=sc.nextInt();
                nums[x-1][y-1]++;
            }
            int ret=0;
            int max=0;
            int x0=0;
            int y0=0;
            //第一次统计最大可清楚蘑菇数量
            for(int i=1;i<n-1;i++){
               for(int j=1;j<m-1;j++){
                   int cnt=0;
                   for(int[] d:path){
                       if(nums[i+d[0]][j+d[1]]>0) cnt++;  
                   }
                  if(cnt>max){
                      max=cnt;
                      x0=i;
                      y0=j;
                  }

               }
            }
            ret+=max;
            //在数组中减掉刚刚清楚的3x3
            for(int[] d:path){
                if(nums[x0+d[0]][y0+d[1]]>0){
                     nums[x0+d[0]][y0+d[1]]--;    
                }

            }
            //第二次统计可以清楚的最大蘑菇数
            max=0;
            x0=0;
            y0=0;
             for(int i=1;i<n-1;i++){
               for(int j=1;j<m-1;j++){
                   int cnt=0;
                   for(int[] d:path){
                       if(nums[i+d[0]][j+d[1]]>0) cnt++;

                   }
                   if(cnt>max){
                        max=cnt;
                       x0=i;
                       y0=j;
                   }

               }
            }
            //累加输出
            ret+=max;
            System.out.println(ret);


        }
    }
}
全部评论

相关推荐

牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务