Advertisement
royalsflush

Referência para UVa 639 (Luiza)

Apr 6th, 2012
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. char grid[5][5];
  6. int maxR=0;
  7. int n;
  8.  
  9. bool valid() {
  10.     bool rook=false;
  11.  
  12.     for (int i=0; i<n; i++) {
  13.         rook=false;
  14.  
  15.         for (int j=0; j<n; j++)
  16.             if (grid[i][j]=='X') rook=false;
  17.             else {
  18.                 if (grid[i][j]=='R') {
  19.                     if (rook) return false;
  20.                     else rook=true;
  21.                 }
  22.             }
  23.     }
  24.  
  25.     for (int j=0; j<n; j++) {
  26.         rook=false;
  27.  
  28.         for (int i=0; i<n; i++)
  29.             if (grid[i][j]=='X') rook=false;
  30.             else {
  31.                 if (grid[i][j]=='R') {
  32.                     if (rook) return false;
  33.                     else rook=true;
  34.                 }
  35.             }
  36.     }
  37.  
  38.     return true;
  39. }
  40.  
  41. int count() {
  42.     int cnt=0;
  43.  
  44.     for (int i=0; i<n; i++)
  45.         for (int j=0; j<n; j++)
  46.             if (grid[i][j]=='R') cnt++;
  47.    
  48.     return cnt;
  49. }
  50. void place(int p) {
  51.     if (p==16) {
  52.         if (valid()) maxR=max(count(),maxR);
  53.         return;
  54.     }
  55.  
  56.     if (grid[p/4][p%4]=='.') {
  57.         grid[p/4][p%4]='R';
  58.         place(p+1);
  59.         grid[p/4][p%4]='.';
  60.     }
  61.     place(p+1);
  62. }
  63.  
  64. int main() {
  65.     while (1) {
  66.         scanf("%d", &n);   
  67.         if (!n) break;
  68.         maxR=0;
  69.  
  70.         for (int i=0; i<n; i++)
  71.             for (int j=0; j<n; j++)
  72.                 scanf(" %c", &grid[i][j]);
  73.  
  74.         place(0);
  75.         printf("%d\n", maxR);      
  76.     }
  77.  
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement