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