Battleships in a Board

連着的橫着的或者豎着的x就是一艘船,每兩艘不會連着,
比如它給的
x . . x
. . . x
. . . x
這個左面的x是一艘,右面的三個x是一艘,然後
. . .x
xxxx
. . .x
這樣的不會給你,因爲中間的左3個x和右邊的豎三個x挨起來了,它不會給你挨起來的船。


所以一種比較簡單的辦法,數一共多少個船頭,一個x,是船頭的話,它的左邊和上邊要不是邊界,要不就是"."。代碼如下:
class Solution {
public:
    int countBattleships(vector<vector<char>>& board) {
        int sum=0;
        int y=board.size();
        for(int i=0;i<y;i++)
        {
            int x=board[i].size();
            for(int j=0;j<x;j++)
            {
                if(board[i][j]=='X')
                {
                if((i<1||board[i-1][j]=='.')&&(j<1||board[i][j-1]=='.'))  
                    {
                    sum++;
                    }
                }
            }
        }
        return sum;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章