Advertisement
juanjo12x

UVA_10189_MineSweeper

Jul 29th, 2014
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.84 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <iostream>
  6. #include <cstdio>
  7. #include <algorithm>
  8. #include <cstring>
  9. #include <string>
  10. #include <cctype>
  11. #include <stack>
  12. #include <queue>
  13. #include <list>
  14. #include <vector>
  15. #include <map>
  16. #include <set>
  17. #include <sstream>
  18. #include <stdlib.h>
  19. #include <cmath>
  20. #define LL unsigned long long
  21. using namespace std;
  22. char table[100][100];char sol[100][100];
  23.  
  24. void update_sol(int i,int j,int r,int c){
  25.  int nx,ny,cont;
  26.  
  27.  cont=0;
  28.  /*procedo a revisar cada uno de los posibles lugares de minas*/
  29.  if(table [i][j]!='*'){
  30.     nx=i-1;ny=j+1;if(0<=nx && ny<c){if(table[nx][ny]=='*') cont++;}
  31.     nx=i+1;ny=j+1;if(nx<r && ny<c){if(table[nx][ny]=='*') cont++;}
  32.     nx=i;ny=j+1;if(ny<c){if(table[nx][ny]=='*') cont++;}
  33.     nx=i;ny=j-1;if(0<=ny){if(table[nx][ny]=='*') cont++;}
  34.     nx=i-1;ny=j;if(0<=nx){if(table[nx][ny]=='*') cont++;}
  35.     nx=i+1;ny=j;if(nx<r){if(table[nx][ny]=='*') cont++;}
  36.     nx=i-1;ny=j-1;if(0<=nx && 0<=ny){if(table[nx][ny]=='*') cont++;}
  37.     nx=i+1;ny=j-1;if(0<=ny && nx<r){if(table[nx][ny]=='*') cont++;}
  38.     sol[i][j]=cont+48;
  39.    
  40.  }else{
  41.      sol [i][j]='*';
  42.  }
  43.  
  44. }
  45.  
  46. int main() {
  47.     int r,c,cont;
  48.    
  49.     cont=1;
  50.     while(scanf("%d %d",&r,&c)){
  51.         if(r==0 && c==0) break;
  52.         if(1<cont) printf("\n");
  53.         memset(table, '.', sizeof(table[0][0]) * r * c);
  54.                 getchar();
  55.         for (int i=0;i<r;i++){
  56.             for(int j=0;j<c;j++){
  57.                 scanf("%c",&table[i][j]);
  58.             }
  59.                         getchar();
  60.         }
  61.         for (int i=0;i<r;i++){
  62.             for(int j=0;j<c;j++){
  63.             update_sol(i,j,r,c);
  64.             }
  65.         }
  66.         /*proceso de impresion*/
  67.         printf("Field #%d:\n",cont);
  68.          for(int i=0;i<r;i++){
  69.             for(int j=0;j<c;j++){
  70.                 printf("%c",sol[i][j]);
  71.             }
  72.           printf("\n");
  73.          }
  74.          memset(sol, '.', sizeof(sol[0][0]) * r * c);
  75.                  cont++;
  76.     }
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement