Advertisement
juanjo12x

UVA_10279_Mine_Sweeper

Jul 29th, 2014
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.66 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[10][10];char sol[10][10];char touched[10][10];
  23. void update_sol(int i,int j,int n){
  24.  int nx,ny,cont;
  25.  
  26.  cont=0;
  27.  /*procedo a revisar cada uno de los posibles lugares de minas*/
  28.  if(table [i][j]!='*'){
  29.         nx=i-1;ny=j+1;if(0<=nx && ny<n){if(table[nx][ny]=='*') cont++;}
  30.         nx=i+1;ny=j+1;if(nx<n && ny<n){if(table[nx][ny]=='*') cont++;}
  31.         nx=i;ny=j+1;if(ny<n){if(table[nx][ny]=='*') cont++;}
  32.         nx=i;ny=j-1;if(0<=ny){if(table[nx][ny]=='*') cont++;}
  33.         nx=i-1;ny=j;if(0<=nx){if(table[nx][ny]=='*') cont++;}
  34.         nx=i+1;ny=j;if(nx<n){if(table[nx][ny]=='*') cont++;}
  35.         nx=i-1;ny=j-1;if(0<=nx && 0<=ny){if(table[nx][ny]=='*') cont++;}
  36.         nx=i+1;ny=j-1;if(0<=ny && nx<n){if(table[nx][ny]=='*') cont++;}
  37.         sol[i][j]=cont+48;
  38.  
  39.  }
  40.  
  41. }
  42. /*procedimiento para explotar las minas*/
  43. void explotar_minas(int n){
  44.     for (int i=0;i<n;i++){
  45.       for(int j=0;j<n;j++){
  46.        if(table[i][j]=='*') sol[i][j]='*';
  47.       }
  48. }
  49. }
  50. int main() {
  51. int n,t,cont;
  52.    cont=1;
  53.   scanf("%d",&t);bool exploto;
  54.   while(t--){
  55.     scanf("%d",&n);
  56.         getchar();
  57.     exploto=false;
  58.     if(1<cont) printf("\n");
  59.      memset(table, '.', sizeof(table[0][0]) * n * n);
  60.      memset(table, '.', sizeof(touched[0][0]) * n * n);
  61.  
  62.      for (int i=0;i<n;i++){
  63.       for(int j=0;j<n;j++){
  64.        scanf("%c",&table[i][j]);
  65.       }
  66.       getchar();
  67.      }
  68.      for (int i=0;i<n;i++){
  69.       for(int j=0;j<n;j++){
  70.        scanf("%c",&touched[i][j]);
  71.       }
  72.       getchar();
  73.      }
  74.      /*procedo de revision*/
  75.      for (int i=0;i<n;i++){
  76.         for(int j=0;j<n;j++){
  77.             /*si ha sido tocado y no es una mina*/
  78.             if((touched[i][j]=='x') && table[i][j]!='*'){
  79.                 update_sol(i,j,n);
  80.             }else if((touched[i][j]=='x') && table[i][j]=='*' && !exploto){
  81.                 explotar_minas(n);exploto=true;
  82.             }else if (touched[i][j]=='.' && table[i][j]=='*' && !exploto){
  83.                 sol[i][j]='.';
  84.             }else if (touched[i][j]=='.' && table[i][j]!='*'){
  85.                 sol[i][j]='.';
  86.             }
  87.         }
  88.     }
  89.     /*proceso de impresion*/
  90.     for(int i=0;i<n;i++){
  91.         for(int j=0;j<n;j++){
  92.          printf("%c",sol[i][j]);
  93.        }
  94.       printf("\n");
  95.     }
  96.     cont++;
  97.     memset(sol, '.', sizeof(sol[0][0]) * n * n);
  98.  
  99.   }
  100.     return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement