Advertisement
Guest User

Untitled

a guest
Dec 20th, 2014
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. int t, n;
  7. char grid[110][110];
  8. bool marc[110][110];
  9. int dx[5] = {0, -1, 0, 1, 0};
  10. int dy[5] = {0, 0, 1, 0, -1};
  11. string linha;
  12. int contador = 0, index;
  13.  
  14. void isShip(int x, int y) {
  15.     int cx = 0;
  16.     for(int i = 0; i <= 4; i++) {
  17.         if(!marc[x][y]) {
  18.             if(grid[x + dx[i]][y + dy[i]] == 'x' || grid[x + dx[i]][y + dy[i]] == '@') {
  19.                 index = i;
  20.                 break;
  21.             }
  22.         }
  23.     }
  24.  
  25.     for(int i = 1; i <= n/2; i++) {
  26.         if(!marc[x + (i * dx[index])][y + (i * dy[index])]) {
  27.             if(grid[x + (i * dx[index])][y + (i * dy[index])] == 'x') {
  28.                 marc[x + (i * dx[index])][y + (i * dy[index])] = true;
  29.                 cx++;
  30.             } else if(grid[x + (i * dx[index])][y + (i * dy[index])] == '@') {
  31.                 marc[x + (i * dx[index])][y + (i * dy[index])] = true;
  32.             } else {
  33.                 break;
  34.             }
  35.         } else {
  36.             break;
  37.         }
  38.     }
  39.     if(cx > 0) {
  40.         contador++;
  41.     }
  42. }
  43.  
  44. int main() {
  45.     scanf("%d", &t);
  46.  
  47.     for(int i = 1; i <= t; i++) {
  48.         memset(marc, false, sizeof marc);
  49.         scanf("%d\n", &n);
  50.         printf("Case %d: ", i);
  51.  
  52.         for(int x = 0; x < n; x++) {
  53.             getline(cin, linha);
  54.             for(int y = 0; y < n; y++) {
  55.                 grid[x][y] = linha[y];
  56.             }
  57.         }
  58.  
  59.         for(int a = 0; a < n; a++) {
  60.             for(int b = 0; b < n; b++) {
  61.                 if(grid[a][b] == 'x' || grid[a][b] == '@') {
  62.                     isShip(a, b);
  63.                 }
  64.             }
  65.         }
  66.  
  67.         printf("%d\n", contador);
  68.         contador = 0;
  69.     }
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement