大概題意就是給你乙個棋盤,讓你放棋子,求在棋盤n*n上的『#』放上k個棋子的所有情況的數目。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列。
深搜可以搜尋出所有答案。
直接看**:
#include#includebool chess[9][9];
bool vis_col[9];
int n,k,ans;
void dfs(int row,int num) //當前搜尋到row,num為已經放下的棋子
if(row>n) //配合下面dfs(row+1,num); 語句使用,避免搜尋越界
return ;
for(int j=1; j<=n; j++)
if(chess[row][j] && !vis_col[j])
dfs(row+1,num); //這裡是難點,當k
能力不夠,陷入浮躁做題的死迴圈裡,參考了網上大神們的**,憋出一題,這樣做能進步嗎。。。???
POJ 1321 棋盤問題(棋盤DFS)
棋盤問題 思路 分層查詢,逐行深搜。注意k n時的處理。1 include 2 include 3 include 4 include 5 include 6 include 7 include 8 include 9 include 10 define ll long long 11 define...
POJ 1321 棋盤問題 DFS
題意 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。題解 include using namespace std define n 10 bo...
poj 1321 棋盤問題(dfs)
language default 棋盤問題 time limit 1000ms memory limit 10000k total submissions 23127 accepted 11478 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放...