#include
#include
#include
#include
#define debug_
char mine[100][100];
int nmax = 0, mmax = 0;
int getMin(int a, int b){
if(a>b)
return b;
else
return a;
}
int getMax(int a, int b){
if(a>b)
return a;
else
return b;
}
int getCnt(int x, int y){
int i = 0, j = 0, cnt = 0;
for(i=getMax(x-1, 0);i<=getMin(x+1, nmax);i++){
for(j=getMax(y-1, 0);j<=getMin(y+1, mmax);j++){
if(mine[i][j] == '*'){
cnt ++;
}
#ifdef debug
printf("---- getCnt : i:%d, j:%d, cnt:%d\n", i, j, cnt);
#endif
}
}
return cnt;
}
int main(){
char buf[101];
int s, i, j, n, m;
s = 1; /* Set counter */
n = 0; /* Row counter in set */
m = 0; /* Column counter in row */
while(gets(buf)){
if(strlen(buf) < 1)
break;
if(n == 0){
nmax = buf[0] - '0';
mmax = buf[2] - '0';
#ifdef debug
printf("---- nmax : %d, mmax : %d\n", nmax, mmax);
#endif
if(nmax == 0 && mmax == 0)
break;
}
else{
for(j=0;j < mmax;j++){
mine[n-1][j] = buf[j];
#ifdef debug
printf("---- n : %d, m : %d, char : %c\n", n, j, mine[n-1][j]);
#endif
}
}
if(n == nmax){
printf("Field #%d\n", s);
for(i=0;i < nmax;i++){
for(j=0;j< mmax;j++){
if(mine[i][j] == '*')
printf("%c",'*');
else
printf("%d",getCnt(i, j));
if(j == (mmax - 1))
printf("\n");
}
}
s++;
n = 0;
memset(mine,'\0',sizeof(mine));
}
else{
n++;
}
}
return 0;
}
2018/07/08
[c] Mine Sweep
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기