精華區beta ck49th318 關於我們 聯絡資訊
※ 引述《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.