[問題] 有關八皇后的類似題目

作者: tony21177   2014-12-10 22:20:37
小弟剛初學程式,遇到一題八皇后的題目,不過再多了城堡,題目是這樣的:
在一個(M+N) x (M+N) 的棋盤上放M個皇后 N 個城堡,皇后可走直走斜,城堡只能走直,
所有的棋子互相不能吃掉對方。
輸出有幾種合法的放法。
詳細題目連結:http://ppt.cc/hvpg
小弟的程式碼:http://codepad.org/M7fotRz1
我的輸出不管怎樣都是0,我已經想不到問題出在哪了,
身邊又沒有人可以討論(這是我因興趣學程式最大的阻礙),
只好上來請教各位前輩,我的程式碼有哪些錯誤不合理的地方呢,
我已經卡了好幾天了....萬分感謝,小弟資質駑鈍...
作者: CCWck (幹嘛要暱稱)   2014-12-10 23:04:00
total=0; printf("%d\n",total);當然always吐出來是0啊你先練習基本功吧 從正確地寫一個函數開始
作者: pika0923 (宜安)   2014-12-11 00:25:00
41,57兩行似乎應該放在外一層/33,49可能會讀到陣列外面
作者: tony21177   2014-12-11 00:27:00
可是我定義total的地方不是使得total是global變數嗎,還是我仍須要用指標方式將total記憶體位置傳入function
作者: CCWck (幹嘛要暱稱)   2014-12-11 01:14:00
看錯了 global 應該沒問題 是條件不成立造成total++沒跑到
作者: scwg ( )   2014-12-11 03:28:00
同意 pika, 41,57應該沒問題, 33,49 row=1,col=0,i=0 就出界了. 另外三個條件 && 好像不太對
作者: KJFC (磁鐵貓)   2014-12-11 11:52:00
猛一看以為是 mooc 結果真的是
作者: ji2my (hkt)   2014-12-11 13:52:00
初學的話 儘量不要用global 很容易衍生問題
作者: tony21177   2014-12-11 21:22:00
謝謝各位的指教,所以我遞迴的流程順序沒有問題嗎?的確是mooc小弟資質不好,進度總是落後很多.....把三個條件式改成||跟遞迴終止條件不要加row==(M+N-1)答案就對了,但使我不太明瞭為啥遞迴終止條件多加了row==(M+N-1)反而是錯的呢,我是一行一行放城堡跟皇后的最後放完應該最後一行也是M+N-1才對啊加不加row應該都沒才對呀更正後的程式碼http://codepad.org/40p6GeOu各位前輩抱歉,我第一顆是從row=1開始放,所以最後放完是row==(M+N)才對
作者: easyget (easyget)   2014-12-16 22:32:00
看到題目,還在想是不是 NTHU MOOC 的內容結果看到連結,還真的是~~~真是太神奇了

Links booklink

Contact Us: admin [ a t ] ucptt.com