#include<stdio.h>
#define N 101
int i,j;
int n,m,k;
int f[N][N];
int x,y;
int main(){
void light(int x,int y,int t);
scanf("%d %d %d",&n,&m,&k);
for(i=1;i<=m;i++){
scanf("%d %d",&x,&y);//記下火把的位置
light(x,y,1);
if(x+2<=n){
f[x+2][y]=1;
}
if(x-2>0){
f[x-2][y]=1;
}
if(y+2<=n){
f[x][y+2]=1;
}
if(y-2>0){
f[x][y-2]=1;
}
}
for(i=1;i<=k;i++){
scanf("%d %d",&x,&y);//記下螢石的位置
light(x,y,2);
}
int sum=0;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(f[i][j]==0){
sum++;
}
}
}
printf("%d",sum);
return 0;
}
void light(int x,int y,int t){
for(i=x-t;i<=x+t;i++){
for(j=y-t;j<=y+t;j++){
if(i>n||i<1||j>n||j<1){
continue;
}else{
f[i][j] = 1;
}
}
}
}

幫忙看看有沒有錯誤,為什么提交總報錯。。。
uj5u.com熱心網友回復:
很明顯你的火把情況考慮的少了(螢石沒看)a[x+2][y+2]=1; //物品所在位
a[x+1][y+2]=a[x][y+2]=1; //左邊兩個
a[x+3][y+2]=a[x+4][y+2]=1;//右邊兩個
a[x+2][y+1]=a[x+2][y]=1;//上邊兩個
a[x+2][y+3]=a[x+2][y+4]=1;//下邊兩個
a[x+3][y+3]=a[x+3][y+1]=1;//左下和右下
a[x+1][y+3]=a[x+1][y+1]=1;//左上和右上
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/122252.html
標籤:C語言
上一篇:求助,題目是"撰寫列印輸入中單詞的長度的直方圖",我這樣打不出來*號,不知道為什么
下一篇:怎么利用陣列越界解決這個問題
