POJ 1321 棋盤問題(棋盤DFS)

2022-05-15 21:33:13 字數 1000 閱讀 6005

棋盤問題

思路:分層查詢,逐行深搜。

注意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 min(a,b) (a>b?b:a)

12#define max(a,b) (a>b?a:b)

13#define eps 1e-9

14#define inf 1 << 30

15using

namespace

std;

1617

intans;

18int

n, m;

19char map[10][10

];20

int vis[10

];21

22void dfs(int x, int

num)

2329

if(x >n)

30return;31

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

3239

}40 dfs(x+1, num); //

這裡是難點,當k41

//又由於當全部棋子都放好後的某個棋盤狀態已經在前面迴圈時記錄了

42//

因此為了處理多餘行,令當前位置先不放棋子,搜尋在下一行放棋子的情況

43return;44

}4546void

run()

4760 ans = 0

;61 dfs(0, 0

);62 printf("

%d\n

", ans);63}

64}6566

int main(void)67

棋盤問題

POJ 1321 棋盤問題

time limit 1000ms memory limit 10000k total submissions 7007 accepted 3390 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列...

poj 1321 棋盤問題

棋盤問題 time limit 1000ms memory limit 10000k total submissions 15365 accepted 7600 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一...

POJ 1321 棋盤問題

找到第乙個有 的行開始回溯就可以了 include include using namespace std const int maxn 9 char board maxn maxn bool c maxn int ans,n,k void backtracking int curi,int cnt...