Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <iostream>
- using namespace std;
- int t, n;
- char grid[110][110];
- bool marc[110][110];
- int dx[5] = {0, -1, 0, 1, 0};
- int dy[5] = {0, 0, 1, 0, -1};
- string linha;
- int contador = 0, index;
- void isShip(int x, int y) {
- int cx = 0;
- for(int i = 0; i <= 4; i++) {
- if(!marc[x][y]) {
- if(grid[x + dx[i]][y + dy[i]] == 'x' || grid[x + dx[i]][y + dy[i]] == '@') {
- index = i;
- break;
- }
- }
- }
- for(int i = 1; i <= n/2; i++) {
- if(!marc[x + (i * dx[index])][y + (i * dy[index])]) {
- if(grid[x + (i * dx[index])][y + (i * dy[index])] == 'x') {
- marc[x + (i * dx[index])][y + (i * dy[index])] = true;
- cx++;
- } else if(grid[x + (i * dx[index])][y + (i * dy[index])] == '@') {
- marc[x + (i * dx[index])][y + (i * dy[index])] = true;
- } else {
- break;
- }
- } else {
- break;
- }
- }
- if(cx > 0) {
- contador++;
- }
- }
- int main() {
- scanf("%d", &t);
- for(int i = 1; i <= t; i++) {
- memset(marc, false, sizeof marc);
- scanf("%d\n", &n);
- printf("Case %d: ", i);
- for(int x = 0; x < n; x++) {
- getline(cin, linha);
- for(int y = 0; y < n; y++) {
- grid[x][y] = linha[y];
- }
- }
- for(int a = 0; a < n; a++) {
- for(int b = 0; b < n; b++) {
- if(grid[a][b] == 'x' || grid[a][b] == '@') {
- isShip(a, b);
- }
- }
- }
- printf("%d\n", contador);
- contador = 0;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement