Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tàu chiến trên bàn cờ trong C++


Cho bàn cờ 2D, đếm số tàu chiến. Tàu chiến ký hiệu 'X', ô trống '.'. Quy tắc: tàu chỉ đặt ngang hoặc dọc (1xN hoặc Nx1), ít nhất một ô ngang/dọc phân cách hai tàu. Ví dụ bàn cờ 3x4 cho kết quả 2 tàu.

Giải thuật

  • ans := 0, n := số hàng, m := số cột.
  • Duyệt từng ô (i,j):
    • Nếu board[i][j] == '.' bỏ qua.
    • Nếu i > 0 và board[i-1][j] == 'X' bỏ qua.
    • Nếu j > 0 và board[i][j-1] == 'X' bỏ qua.
    • Tăng ans.
  • Trả về ans.

Ví dụ mã C++

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int countBattleships(vector<vector<char>>& board) {
        int ans = 0;
        int n = board.size(), m = board[0].size();
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++) {
                if (board[i][j] == '.') continue;
                if (i > 0 && board[i-1][j] == 'X') continue;
                if (j > 0 && board[i][j-1] == 'X') continue;
                ans++;
            }
        return ans;
    }
};

Đầu vào

[["X",".",".","X"],[".",".",".","X"],[".",".",".","X"]]

Đầu ra

2