作者springgod (≡27149≡陈春神)
看板b95902HW
标题[使徒]12
时间Sat Dec 23 02:12:14 2006
喔 上次眼袭课忘了讲竟然没有人跟我们说.......
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