Poj 1321 棋盤問題(DFS)

2021-08-14 16:36:58 字數 464 閱讀 5832

題意:給你乙個n*n的棋盤,和k個棋子,讓你往棋盤麵放棋子,求有多少種不同的放法。要求是同一行同一列不能有棋子。

題解:dfs去判斷。詳細看**註解

#include#includeusing namespace std;

int n,p,num,cnt; // p個棋子。num代表當前放了多少個棋子,cnt表示多少種方法

char map[10][10]; // 棋盤

int vis[10]; //標記這一列是否放過棋子。

void dfs(int k)

if(k >= n ) return ; // 因為棋盤是從0開始的,需要判斷越界

for(int i = 0 ; i < n ; i ++)

} dfs(k+1); //若這一行沒有符合條件的位置,就找下一行。

}int main()

}

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)

大概題意就是給你乙個棋盤,讓你放棋子,求在棋盤n n上的 放上k個棋子的所有情況的數目。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列。深搜可以搜尋出所有答案。直接看 include includebool chess 9 9 bool vis col 9 int n,k,ans void...