POJ 1321 棋盤問題

2021-08-10 20:48:58 字數 852 閱讀 2716

題目:

ac**(c++):

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0xfffffff

#define maxn 10

using

namespace std;

int n,k;

char map[maxn][maxn];

int cnt,ans;

bool

isok

(int x,

int y)

for(

int i =

0; i < n; i++)

return

true;}

void

dfs(

int x,

int y)

if(y)y++;

else

int i = x;

int j = y;

bool flag =

false

;for

(; i < n; i++)}if

(flag)

break

; j =0;

}}intmain

()}

總結: 深搜. 需要注意的是棋子都是一樣的, 還有就是擺放棋子不能在同行同列. 所以可以看做是乙個二叉樹, 對每個不同行同列的#號, 有兩種情況: 放棋子和不放棋子. 因為規模不大, 而且要求求出所有解的數量, 所以這樣搜不會超時.

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...