※ 引述《Pachila (生命的鼓動)》之銘言:
: 姓名 開始學程式設計時間 頭銜 校系
: chyang 小學?年級 資訊奧林匹亞奪牌者 台灣大學資訊工程學系
: Pachila 國中二年級下 無 清華大學電機工程學系
沒啦,你也太誇張……前陣子不是遠見雜誌有各校評筆嗎?你們學校
還在我們前面說……
: 從以上的比較可知
: 你寫的東西當然必須比我們的有挑戰性啦
: 不過既然你都出現了
: 乾脆幫我看看哪裡錯
: 原本想說你忙於事業
: 所以不敢打擾你的說
不敢不敢……
: 既然你嗆聲了
: 那就幫忙一下嘛
: 也才百來行而已
呼,看了好久才看懂說……我覺得錯誤主要是在你第一次找出
一個解後L[] 就是答案,下一次再找的時候a[] 會和L[] 設成
相同,因此,假設第一組解是01234567的話(當然這是不可能
的)下次a[] 也變成了01234567,如此一來當程式進入最深一
層loop後,就會跳回上一層了,而上一層是6 會跑到7 但是下
一層的a[] 卻還是7 因此立刻就又回上一層了,你應該在深層
迴圈return後,就把a[] 設為0 這樣才行吧……不知道你了解
了我的意思嗎?
其實建議你可以不要這樣麻煩,你可以將棋盤看成是一個數列
來做,如01234567就代表了,第一列放在第0 個位置第二列放
在第1 個位置……如此一來,你可以用「交換」的方法來改變
這一個數列,也就是這一個數列的排列組合,這樣子的話寫起
來會好寫多了,例如將最後的兩數交換變成01234576。如此一
來在檢查時只要檢查斜的方向就可以了……
--
------------------------------------------------------------------
James Chou-Han Yang Email : chyang@robot.csie.ntu.edu.tw
------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.m8.ntu.edu.tw)
◆ From: agent.csie.ntu.