2019-04-15 17:16:06 UNSELECTED

Unknown type code

Copy Copied! Full
#include <stdio.h> int main(void){ int h,w,i,j; int d[100][100]={0}; scanf("%d%d",&h,&w); char s[h+1][w+1]; for(i=0;i<h;i++){ scanf("%s",s[i]); } int cnt = 0; void check(int x,int y){ if(x<0 || x>=h || y<0 || y>=w){ return; } if(s[x][y]=='.'){ cnt++; s[x][y]='1'; check(x-1,y); check(x+1,y); check(x,y-1); check(x,y+1); } return; } check(0,0); d[0][0]=1; //現在地から上下左右4マスを調べる //その文字が1&&まだ距離が入ってなかったら //最短距離に1を足した数をそこに入れる void check2(int x,int y){ if(s[x+1][y]=='1'){ if(d[x+1][y]==0){ d[x+1][y]=d[x][y]+1; check2(x+1,y); } } if(s[x-1][y]=='1'){ if(d[x-1][y]==0){ d[x-1][y]=d[x][y]+1; check2(x-1,y); } } if(s[x][y-1]=='1'){ if(d[x][y-1]==0){ d[x][y-1]=d[x][y]+1; check2(x,y-1); } } if(s[x][y+1]=='1'){ if(d[x][y+1]==0){ d[x][y+1]=d[x][y]+1; check2(x,y+1); } } } for(i=0;i<h;i++){ printf("%s\n",s[i]); } check2(0,0); for(i=0;i<h;i++){ for(j=0;j<w;j++){ printf("%d",d[i][j]); } printf("\n"); } printf("%d",cnt); return 0; }
RECOMMEND