棋盤問題 簡單搜尋練習

2021-07-10 14:43:17 字數 693 閱讀 9210

poj1321(dfs

棋盤問題)

解題報告:

1.題意很簡單,乙個棋盤問題,可以用搜尋方式解決。那麼好,它的搜尋框架很明晰了,從乙個狀態到下乙個搜尋狀態,直到數目達到k,計數加一,或者此搜尋狀態無解,回溯。

顯然,搜尋退出條件是數目達到k或者此搜尋狀態無解。

2.狀態如何表示?

vis[i][j]標記是否有落子即可。再簡單一點,採取按行搜尋的順序,在當前行row下,只需記錄col[j]是否有落子即可。

3.狀態如何轉移?

在當前行row下,已經落子cnt,那麼可以就當前行是否落子轉移到下乙個狀態。

有兩種可能,(1)要麼不落子,直接搜尋下一行row+1;(2)要麼遍歷所有列,可以落子則落子。

//dfs

#include #include #include using namespace std;

const int maxn = 9;

bool col[9];

char map[9][9];

int n, k, ans;

bool dfs(int cnt, int row) //cnt已落子數,row當前行數

} return false;

}int main()

return 0;

}

簡單搜尋 棋盤問題

在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將...

簡單搜尋 DFS 棋盤問題

description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,...

搜尋 A 棋盤問題

在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將...