题意:统计战舰的个数,其实就是统计相连的X的个数。
思路:逐个检查,用DFS改相连的X。
class Solution {
public:
vector<vector<char> > tempboard;
int sizex, sizey;
int countBattleships(vector<vector<char>>& board) {
tempboard = board;
sizex = board.size();
sizey = board[0].size();
int nums = 0;
for(int i = 0; i < tempboard.size(); ++ i) {
for(int j = 0; j < tempboard[i].size(); ++ j) {
//cout << tempboard[i][j];
if(tempboard[i][j] == 'X') {
nums ++;
dfs(i, j);
}
}
}
return nums;
}
void dfs(int x, int y) {
if(tempboard[x][y] == '.') return;
tempboard[x][y] = '.';
if(x - 1 >= 0) dfs(x - 1, y);
if(x + 1 < sizex) dfs(x + 1, y);
if(y - 1 >= 0) dfs(x, y - 1);
if(y + 1 < sizey) dfs(x, y + 1);
return;
}
};