2015年4月21日星期二

[UVa] 10189 - Minesweeper

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
  //freopen("input.txt","r",stdin);
  int n,m;
  int kase = 0;
  while(scanf("%d %d",&n,&m)){
    if(n==0 && m==0)break;
    if(kase!=0)printf("\n");
    char field[n][m];
    int field_out[n][m];
    memset(field_out,0,sizeof(field_out));
    getchar();
    for(int i=0;i<n;i++){
      fgets(field[i],1000,stdin);
    }
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        if(field[i][j]=='*'){
          int nx,ny;
          for(nx=-1;nx<=1;nx++){
            for(ny=-1;ny<=1;ny++){
              if(field[i+ny][j+nx]!='*' && i+ny>=0 && i+ny<n && j+nx>=0 && j+nx<m)
                field_out[i+ny][j+nx]++;
            }
          }
          field_out[i][j]=-1;
        }
      }
    }

    printf("Field #%d:\n",++kase);
    //print the field
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
        if(field_out[i][j]==-1)printf("*");
        else printf("%d",field_out[i][j]);
      }
      printf("\n");
    }
  }
  return 0;
}

沒有留言: