//1321、我分分鐘都可以a掉你你都不知道系咩事、
a掉的那一刻,我盯著螢幕看了好久,這真是一道讓我痛苦萬分的題目,
遞迴啊遞迴。。。是看了discuss裡有個人貼的錯誤**才獲得靈感。。。
思考了那麼久,是那麼的值得,差點放棄了。。。
另外這道題要深刻總結,網上看了兩種更簡潔的方法,明天具體分析。
真是一道關於深搜、遞迴的好題。
view code
1 #include明天開討論會,還要準備ppt,明天再總結。。。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
想了乙個內環,其中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...