Re: [問題] 請問一下我的八皇后程式
看板C_and_CPP (C/C++)作者ledia (下班後才下棋)時間15年前 (2009/12/13 23:14)推噓11(11推 0噓 10→)留言21則, 15人參與討論串3/3 (看更多)
※ 引述《pocernld (時間像流水般過去了...)》之銘言:
: 遇到的問題: (題意請描述清楚)
: 我寫了一個八皇后程式,但是編譯以後執行卻完全沒東西,
: 可否請板上各位高手幫我看一下,謝謝
: 希望得到的正確結果:
: 八皇后的解
: 程式跑出來的錯誤結果:
: 完全不會動...
: 開發平台:
: Dev-c++ 4.9.9.2
: 有問題的code: (請善用置底文標色功能)
code 麻煩下次用置底的那幾個貼 code 網頁貼
貼在 BBS 上閱讀不便
真的有人想 copy 下來幫忙看問題在哪裡, 也會很麻煩
: 補充說明:
: 說一下我的想法
: 1.假設皇后放在一個格子之中,則他可以吃到的格子數目全部加起來
: 寫在那一個格子裡頭,然後去求所有格子的最小值,把皇后放在那個最小值裡面
: 然後把它可以吃掉的格子設為1,再去求剩下不能吃掉的格子的最小值,
: 然後再放第二個皇后,以此類推下去,放皇后的方法就是那些是最小值的格子
: 一個一個去試,如果走到死路的話,就把最後一次放皇后的格子的格子的皇后拿掉
: ,重新設定最小值,再把皇后放在下一個格子,一直到找到解為止
你是第一個在版上貼出自己的 code 之後
我想了兩天才知道要跟你講什麼的人... orz
即使有很多人小小揶揄了一下
不過我覺得還是需要認真評論一下這件事
首先, 看起來你是個新手
對新手而言, 我對你的做法/想法很讚賞
雖然你的做法是很基本的 greedy search
但這種方法在我還是新手時
是無法找出完備的構想並且實作出來
寫程式其實可以非常粗略的分成兩個部份
第一個是想出好的步驟或解法 (或稱演算法)
第二個則是依照你想好的解法去寫出對應的程式碼
通常上面兩個的能力是可以分開訓練的
第一個需要的是邏輯推理和數學能力
第二個則是一開始需要一些基本入門的學習
接著就是大量的實作經驗和閱讀它人的程式
甚至是看書來增進程式寫作技巧
當你的實作能力還不夠成熟的時候
就會發現有些很簡單的概念或想法
你都只能寫出自己都很難以理解的程式
就好像如果一個人英文的辭彙背的不是很多
他就得要比手劃腳才能說出他想表達的意思
基本上你所遇到的問題就是這樣了
但別緊張, 每個人都會經歷過這一段
大部份人看到這程式會笑, 多半也都是會心一笑
總之, 你需要按部就班的練習
可能的話找個比較有經驗的人幫你忙
在你有想法, 要開始實作之前討論一下
我相信經驗多了, 慢慢就會得心應手了
至於 8queen 的問題
你的方法不錯, 但是你可以進一步想一想
雖然每次挑吃掉最少格子的 queen 來放
等之後所有擺法都不行之後才去試次少的
但如果運氣不好, 某一組解是需要放在吃掉最多格的那格
你還是得試過所有可以放的位置
既然如此, 我們其實可以不管次序
只要試過所有可以放的位置就好
(就是去試所有不會跟之前放過的 queen 打架的位置)
是不是會把問題又簡化了許多 ?
你可以試試看這種比較簡化的解法能不能實作的出來
其實十六層迴圈的解法並沒有對錯問題
只是你自己應該有感覺到
找哪裡寫錯會找得非常痛苦
而且如果題目改成找 10 queen 問題
你的程式又需要大改版
所以一般來說我們會用一些技巧來避免這種寫法
這也是往後繼續進步所需要努力的方向
一個程式能夠寫得越簡單越容易懂越好
最好就是隨便一個入門者來看都不會太費力就能看得懂
這樣未來如果有機會寫大系統時要合作也會比較輕鬆
: 麻煩各位大大解答了
: 小弟我已經熬夜兩天debug不出來...
: 感激不盡...
最後說一下, 8 queen 已經算稍稍進階的題目了
很多大學、碩士畢業的人都不見得能一次寫到好
但我不知道你目前學習到哪
所以也不知道給什麼樣的提示對你比較有幫助
通常解 8 queen (或 N queen) 用的方法基本是 DFS
如果你還有興趣的話可以 google "8 queen" 或是 "depth-first search" 看點資料吧
--
有時候,遺忘,是令人快樂的。什麼時候?當然是有人傷了你的心的時候。
存心傷你的那個人,固然是故意和你過不去,但是被傷了心而耿耿於懷的你
,卻是和自己過不去了。所以,記性不好的人,通常會是比較快樂的人,也
是比較不容易被擊倒的人。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.50
※ 編輯: ledia 來自: 140.112.30.50 (12/13 23:19)
※ 編輯: ledia 來自: 140.112.30.50 (12/13 23:22)
推
12/13 23:26, , 1F
12/13 23:26, 1F
推
12/13 23:36, , 2F
12/13 23:36, 2F
→
12/13 23:39, , 3F
12/13 23:39, 3F
推
12/13 23:40, , 4F
12/13 23:40, 4F
推
12/14 00:37, , 5F
12/14 00:37, 5F
推
12/14 04:38, , 6F
12/14 04:38, 6F
推
12/14 11:20, , 7F
12/14 11:20, 7F
→
12/14 12:18, , 8F
12/14 12:18, 8F
→
12/14 12:19, , 9F
12/14 12:19, 9F
→
12/14 12:19, , 10F
12/14 12:19, 10F
→
12/14 12:20, , 11F
12/14 12:20, 11F
→
12/14 12:21, , 12F
12/14 12:21, 12F
→
12/14 18:44, , 13F
12/14 18:44, 13F
推
12/14 18:53, , 14F
12/14 18:53, 14F
→
12/14 23:29, , 15F
12/14 23:29, 15F
推
12/15 04:28, , 16F
12/15 04:28, 16F
推
12/15 04:55, , 17F
12/15 04:55, 17F
推
12/15 21:49, , 18F
12/15 21:49, 18F
→
12/15 21:49, , 19F
12/15 21:49, 19F
→
12/15 21:50, , 20F
12/15 21:50, 20F
推
12/16 13:10, , 21F
12/16 13:10, 21F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章