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,用乙個空格隔開,表示了將...