C 驗證LeetCode包圍區域的DFS方法

2022-10-04 05:42:08 字數 1334 閱讀 4019

在leetcode中的surrounded regions 包圍區域這道題中,我們發現用dfs方法中的最後乙個條件必須是j > 1,如下面的紅色字型所示,如果寫成j > 0的話無法通過oj,一直百思不得其解其中的原因,直到有網友告訴我說他驗證了最後乙個大集合在本地機子上可以通過,那麼我也來驗證看看吧。

class solution

}for (int i = 0; i < board.size(); ++i) }}

void solvedfs(vector > &board, int i, int j) }};

驗證的方法無非就是兩種方法都算出個結果,然後比較兩者是否相同,難點就是在於如何將超大資料集合存入二維vector>中,這裡我先將超大集合存入vector中,然後再寫了個程式將其轉化為vector> 運算,最後再將結果儲存出來,驗證**如下所示:

#include

#include

#include

#include

#include

using namespace std;

class solution

}for (int i = 0; i < board.size(); ++i) }}

void solvedfs(vector > &board, int i, int j)

}};class solution2

}for (int i = 0; i < board.size(); ++i) }}

void solvedfs(vector > &board, int i, int j)

}};vector > convert(vector v)

res.push_back(tmp);

}return res;

}vector convert2(vector > v)

res.push_back(tmp);

}return res;

}void writevec(vector v, char* filename)

int main() ;

vector > board = convert(b);

vector > board2 = convert(b);

s.solve(board);

s2.solve(board2);

writevec(convert2(board), "b_out1.txt");

writevec(convert2(board2), "b_out2.txt");

return 0;

}結果比較發現相同,說明j > 0本身是對的,那麼至於其為何無法通過oj,那原因就不知道了,也許是因為oj想讓我們用bfs的方法吧。。

被X包圍的區域

題目描述 給定乙個二維的矩陣,包含 x 和 o 字母 o 找到所有被 x 圍繞的區域,並將這些區域裡所有的 o 用 x 填充。輸入 輸入樣例由多組資料組成。第一行輸入兩個正整數n,m表示邊界。1 n,m 100 接下來輸入nm個 x 和 o 表示矩陣。輸出 輸出乙個nm的矩陣表示填充後的矩陣。樣例輸...

求多邊形包圍區域

求多邊形包圍區域 已知單元格中,黑色部分為封閉邊緣,如何求出綠色部分也在包圍圈之內?有了上面的概念之後,只需要選定乙個點作為起點並沿邊緣走一圈再回到起點,通過判斷向左側拐和向右拐的次數,若左拐次數大於右拐次數則為左側包圍,反之為右側包圍。在給定的包圍順序下判定了左 右 側包圍,遍可獲得包圍區域 以上...

130 被包圍的區域python實現

題目描述 給定乙個二維的矩陣,包含 x 和 o 字母 o 找到所有被 x 圍繞的區域,並將這些區域裡所有的 o 用 x 填充。參考別人的思路,用dfs寫了以下 遇到了一些坑。class solution object defsolve self,board type board list list ...