C++中的戰艦遊戲
假設我們有一個二維棋盤,我們需要計算其中有多少艘戰艦。戰艦用符號'X'表示,空位用'.'表示。我們可以假設以下規則:
你得到一個有效的棋盤,只由戰艦或空位組成。
戰艦隻能水平或垂直放置。換句話說,它們只能是1xN(1行,N列)或Nx1(N行,1列)的形狀,其中N可以是任意大小。
至少一個水平或垂直單元格將兩艘戰艦隔開——沒有相鄰的戰艦。
因此,如果棋盤如下所示:
| X | . | . | X |
| . | . | . | X |
| . | . | . | X |
那麼輸出將是2,因為有兩艘戰艦。
為了解決這個問題,我們將遵循以下步驟:
ans := 0,n := 行數,m := 列數
對於第i行
對於第j列
如果board[i, j]是點,則進入下一輪迭代
如果 i > 0 且 board[i – 1, j] = ‘X’,則進入下一輪迭代
如果 j > 0 且 board[i, j - 1] = ‘X’,則進入下一輪迭代
ans 加 1
返回 ans
讓我們看看下面的實現,以便更好地理解:
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int countBattleships(vector<vector<char>>& board) {
int ans = 0;
int n = board.size();
int 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;
}
};
main(){
vector<vector<char>> v = {{'X','.','.','X'},{'.','.','.','X'},{'.','.','.','X'}};
Solution ob;
cout << (ob.countBattleships(v));
}輸入
[["X",".",".","X"],[".",".",".","X"],[".",".",".","X"]]
輸出
2
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP