看板 b95902HW 關於我們 聯絡資訊
喔 上次眼襲課忘了講竟然沒有人跟我們說....... ok 所以現在來為大家補完一下吧 首先 這次的題目就是河內塔 給那3根柱子的編號 還有幾個盤子 例如 10 20 30 3 代表有3個盤子 要從10上面搬到30上面 可以經過 20 所以要輸出 from 10 to 30 from 10 to 20 from 30 to 20 from 10 to 30 from 20 to 10 from 20 to 30 from 10 to 30 這樣 那 怎麼下手呢:D 第一 你們上傳的檔案應該長的像這樣 #include <stdio.h> #include <assert.h> #include "stack.h" void init(Stack *s){ } void push(Stack *s, Data d){ } Data pop(Stack *s){ } int empty(Stack *s){ } int full(Stack *s){ } int main() { } 首先是實做stack的各項函式 然後要在main 裡宣告一個stack 變數 接著 在不用到遞迴的條件寫 輸出正確解答 至於怎麼不用遞迴就做出來呢 就是利用stack啦:D 先來看看這段code void recursion(int buck,int from,int midway,int target){ if (buck==1){ printf("%d -> %d\n",from,target); } else{ recursion(buck-1,from,target,midway); printf("%d -> %d\n",from,target); recursion(buck-1,midway,from,target); } } 沒錯河內塔的正解 所以啦 你們的工作就是把這段code轉成不是遞迴版本的 但是要注意的是 教授所提供的struct Data裡面的資訊是有點不夠的 所以需要一點點額外的幫助 例如 一個獨立於stack之外的變數 --- 大概是這樣 有問題的再問吧 我想睡覺了XD -- ╭╮ ○ ╭╮ ╭─╯╰─╮ ╭─╮╭-╯╰-╮ ╭─╭╮─╮ ╰╭╯│☆ ☆│ ╭╯╭╮╰╮ ╭┤☆│☆ ☆│ ★│╰╯│★ ♂│ ╰-╮╭-╯ ╰──╯ ♀ ╰╯ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.230.58