日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网易2016研发工程师编程题:扫描透镜

發布時間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网易2016研发工程师编程题:扫描透镜 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
掃描透鏡 在N*M的草地上,小明種了K個蘑菇,蘑菇爆炸的威力極大,小華不想貿然去闖,而且蘑菇是隱形的.只 有一種叫做掃描透鏡的物品可以掃描出隱形的蘑菇,于是他回了一趟戰爭學院,買了2個掃描透鏡,一個 掃描透鏡可以掃描出(3*3)方格中所有的蘑菇,然后小華就可以清理掉一些隱形的蘑菇. 問:小華最多可以清理多少個蘑菇?
輸入描述:
第一行三個整數:N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小; 接下來K行,每行兩個整數x,y(1≤x≤N,1≤y≤M).代表(x,y)處提莫種了一個蘑菇. 一個方格可以種無窮個蘑菇.
輸出描述:
輸出一行,在這一行輸出一個整數,代表蘭博最多可以清理多少個蘑菇.

解題
掃描鏡子,掃描了,都清理掉,答案不就是K嗎?

無法理解題意

討論中下面講解 一個掃描透鏡可以掃描出(3*3)方格中的所有蘑菇,問最多可清理多少個蘑菇就是求二維數組中哪一塊(3*3)區域中的蘑菇數最多。 有兩個透鏡,那么最多可清理的蘑菇數就是第一個透鏡最多清理的加上第二個透鏡最多清理的(將求最多清理蘑菇數寫成函數)。
需要注意的是對于每個方格如果其中有多個蘑菇那么一次掃描只能清理掉一個蘑菇。
這要求我們在求出第一個最優解后要對二維數組中的相應方格中的蘑菇數進行減1操作
1.暴力找到第一個3*3小方格內非空的個數
2.該方格內數減1
3.暴力找第二個
這樣的方格就是,非空元素最大

import java.util.Scanner; public class Main{public static void main(String[] args){Scanner in = new Scanner(System.in);while(in.hasNext()){int n = in.nextInt();int m = in.nextInt();int k = in.nextInt();if(n<3)n=3;if(m<3)m=3;int[][] A = new int[n][m];for(int i =0;i<k;i++){int x = in.nextInt();int y = in.nextInt();A[x-1][y-1]++;}int first[] = new int[3];int second[] = new int[3];Scan(A,first);for(int i = first[1];i< first[1] + 3;i++){for(int j = first[2];j<first[2] + 3;j++){if(A[i][j]>0)A[i][j]--;}}Scan(A,second);System.out.println(first[0] + second[0]);}}public static void Scan(int[][] A,int[] arr){int n = A.length;int m = A[0].length;for(int i =0;i<n - 2;i++){for(int j =0;j< m -2;j++){int num = 0;for(int u = i;u<i+3;u++){for(int v =j;v<j+3;v++){if(A[u][v] >0){num++;}}}if(arr[0]<= num){arr[0] = num;arr[1] = i;arr[2] = j;}}}} }

?

轉載于:https://www.cnblogs.com/theskulls/p/5280741.html

總結

以上是生活随笔為你收集整理的网易2016研发工程师编程题:扫描透镜的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。