POJ 1321 棋盤問題

2022-09-10 15:00:38 字數 1041 閱讀 1602

//1321、我分分鐘都可以a掉你你都不知道系咩事、

a掉的那一刻,我盯著螢幕看了好久,這真是一道讓我痛苦萬分的題目,

遞迴啊遞迴。。。是看了discuss裡有個人貼的錯誤**才獲得靈感。。。

思考了那麼久,是那麼的值得,差點放棄了。。。

另外這道題要深刻總結,網上看了兩種更簡潔的方法,明天具體分析。

真是一道關於深搜、遞迴的好題。

view code

1 #include

2 #include

3 #include

4using

namespace std;56

char map[9][9];

7int size,num;

8int sum;

9bool vrow[9],vcolumn[9];

1011

#define online

1213

void online()

14 21

22void dfs(int row,int deepth)

23 29

if(row>size) //

顯然這個判斷要放後面

30return ;

31for(int i=1;i<=size;i++)

32

41 }

42 dfs(++row,deepth);

43 }

4445

void init()

46 61 }

6263

64int main()

65

明天開討論會,還要準備ppt,明天再總結。。。

想了乙個內環,其中42語句改成dfs(row+1,step)也可以。

另外附加兩個比較簡潔的寫法,是網上找的。。。

這個有狀態壓縮。

這個要從他的寫法裡學會用while寫深搜。。。

其中對pos++這一句很經典,和我的42行一樣,需要仔細思考。

為什麼我的不能寫row++,為什麼他的寫dfs(pos+1,a)就會超時?

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