主题:[讨论]hanoi塔寫到一半卡住了(急件)
主函數
% movenum表示移動次數
% scheme移動方案的矩陣,一行表示一次移動的方式
% disknum表示移動盤子的號數
% a盤子一開始的柱子
% b中間柱
% c目標柱
function [movenum,system]=hanoi(disknum,a,b,c)
global HANOI %設全域變數
HANOI=[];%設置為空矩陣
temphanoi(disknum,a,b,c);
movenum=size(HANOI,1);%取得行數,即為移動次數
system=HANOI;
副函數
function temphanoi(disknum,a,b,c)
global HANOI%設為全域變數
if disknum==1%移動方式
HANOI=[ HANOI;1,a,c];
else
temphanoi(disknum-1,a,c,b);
%把最後一片移到目標柱上
HANOI=[HANOI;disknum,a,c];
%把中間當第一根柱子, 原來的第一根當中間柱, 繼續移動
temphanoi(disknum-1,b,a,c);
end
命令列
clc
clear
syms a b c h m
[n,s]=hanoi(3,a,b,c)
h=zeros(3,3); % 建立3*3的零矩陣
h(:,1)=(1:3)';
m=3;
a=h(:,1)
b=h(:,2)
c=h(:,3)
[a b c]
我寫到這裡時該如何把s的那個矩陣放進[a b c]裡?
我試過for i=1:n
s(i,:)
end
但要如何把一行一行的搬移過程代入[a b c]
拜託高手指點一下.....感激不進呀!!
% movenum表示移動次數
% scheme移動方案的矩陣,一行表示一次移動的方式
% disknum表示移動盤子的號數
% a盤子一開始的柱子
% b中間柱
% c目標柱
function [movenum,system]=hanoi(disknum,a,b,c)
global HANOI %設全域變數
HANOI=[];%設置為空矩陣
temphanoi(disknum,a,b,c);
movenum=size(HANOI,1);%取得行數,即為移動次數
system=HANOI;
副函數
function temphanoi(disknum,a,b,c)
global HANOI%設為全域變數
if disknum==1%移動方式
HANOI=[ HANOI;1,a,c];
else
temphanoi(disknum-1,a,c,b);
%把最後一片移到目標柱上
HANOI=[HANOI;disknum,a,c];
%把中間當第一根柱子, 原來的第一根當中間柱, 繼續移動
temphanoi(disknum-1,b,a,c);
end
命令列
clc
clear
syms a b c h m
[n,s]=hanoi(3,a,b,c)
h=zeros(3,3); % 建立3*3的零矩陣
h(:,1)=(1:3)';
m=3;
a=h(:,1)
b=h(:,2)
c=h(:,3)
[a b c]
我寫到這裡時該如何把s的那個矩陣放進[a b c]裡?
我試過for i=1:n
s(i,:)
end
但要如何把一行一行的搬移過程代入[a b c]
拜託高手指點一下.....感激不進呀!!