#include <stdio.h> //#include <stdlib.h> int che[100][100]={0}; int cnt=0; int n, m; int finish_check(void); void set(void); void pr(void); int te(int x, int y); int main(void) { int i, j, h=0; //n=세로길이 m=가로길이 scanf(" %d %d", &n, &m); for(i=0; i<n; i++) { for(j=0; j<m; j++) { scanf(" %d", &che[i][j]); } } //pr(); while(finish_check()==1) { h++; cnt=0; te(0, 0); //pr(); set(); //printf("------------------"); //system("PAUSE"); } printf("%d\n%d", h, cnt); return 0; } int te(int x, int y){ if(x>=0 && x<=n && y>=0 && y<=m){ if(che[x][y]==0){ che[x][y]=5; if(che[x+1][y]==1) che[x+1][y]=2; if(che[x-1][y]==1) che[x-1][y]=2; if(che[x][y+1]==1) che[x][y+1]=2; if(che[x][y-1]==1) che[x][y-1]=2; if(che[x+1][y]==0) te(x+1,y); if(che[x-1][y]==0) te(x-1,y); if(che[x][y+1]==0)te(x,y+1); if(che[x][y-1]==0) te(x,y-1); } else return 0; } else return 0; } void pr(void) { int i, j; printf("\n"); for(i=0; i<n; i++) { for(j=0; j<m; j++) { if(che[i][j]==0 || che[i][j]==5) printf(" "); else printf("%d ", che[i][j]); } printf("\n"); } printf("\n\n"); } void set(void) { int i, j; for(i=0; i<n; i++) { for(j=0; j<m; j++) { if(che[i][j]==5) che[i][j]=0; else if(che[i][j]==2) { cnt++; che[i][j]=0; } } } } int finish_check(void) { int i, j; for(i=1; i<(n-1); i++) { for(j=1; j<(m-1); j++) { if(che[i][j]==1) return 1; } } return 0; }
2018.05.05 11:55
정올 - 알고리즘 - 치즈(1840)
조회 수 703 추천 수 0 댓글 0