內容
輸出座標附近九宮格內有多少顆地雷(每格座標最多一顆地雷
輸入說明
單筆測資
第一行輸入n,m
代表雷區的長與寬
第二行有一a
表示接下來有a行x,y座標表示a顆地雷
最後有一t表示詢問t次
輸出說明
輸出該座標九宮格內有多少地雷
(包含該座標腳下
範例輸入
40 40
2
20 20
21 21
2
20 21
30 30
範例輸出
2
0
提示
n≤500,m≤500
a≤n∗m
t≤100
地雷座標 0≤x≤n−1,0≤x≤m−1
查詢座標 1≤x≤n−2,1≤x≤m−2
不用特判邊界
程式
#include <iostream>
using namespace std;
int main(){
int n, m, a, t, z = 0;
cin>>n>>m; //詢問長與寬
int xy[n][m];
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
xy[i][j] = 0;
}
}
cin>>a;
while(a--){
int x, y;
cin>>x>>y;
xy[x][y] = 1;
}
cin>>t;
while(t--){
int x, y;
cin>>x>>y;
if(xy[x+1][y+1] == 1) z++;
if(xy[x+1][y-1] == 1) z++;
if(xy[x-1][y-1] == 1) z++;
if(xy[x-1][y+1] == 1) z++;
if(xy[x][y-1] == 1) z++;
if(xy[x+1][y] == 1) z++;
if(xy[x-1][y] == 1) z++;
if(xy[x][y+1] == 1) z++;
if(xy[x][y] == 1) z++;
cout<<z<<endl;
z = 0;
}
}
解說
變數z代表周圍炸彈的數量,其他都和題目一樣。
第一個for迴圈讓陣列全部歸零,方便之後判斷。
然後再把有炸彈的那格設為1,最後查詢座標周圍有沒有炸彈,就用暴力法慢慢找就行了。
0 Comments
張貼留言