漢諾塔最優(yōu)算法 漢諾塔遞歸算法?
漢諾塔遞歸算法?1//河內(nèi)塔2#包括和酒店。H>3 void Hanoi(int n,char a,char b,char c)//這里表示在b列的幫助下將a列上的圖版移到c列4{if(1==n)
漢諾塔遞歸算法?
1//河內(nèi)塔
2#包括和酒店。H>
3 void Hanoi(int n,char a,char b,char c)//這里表示在b列的幫助下將a列上的圖版移到c列
4{if(1==n)//如果是圖版,將a列上的圖版移到c列
5{
6 Printf(%c-->%cn,a,c)
7}
8 else
9{
10 Hanoi n-1,a,c,b)//move n-1 plates on column a to column B with the column C
11 printf(%C-->%Cn“,a,C)//將a列的最后一塊板移到C列
12 Hanoi(n-1,B,a,C)//然后將B列的n-1板移到C
13}
14}
15 int main()
16{int n
17 printf輸入磁盤(pán)數(shù):”)
18 scanf(%d“,&n)
19 Hanoi(n,%a”,%B“,%C”)
20 return 0
21}
復(fù)制代碼
使用三層結(jié)構(gòu)對(duì)其稍加修改?#include<iostream>using namespace stdconst int N=4void move(char from,char to){ 輸出<< “from ”<<from<< “to ”<<to<<endl}void hanoi(int N,char p1,char p2,char p3){ 移動(dòng)(N==1) 移動(dòng)(p1,p3) 移動(dòng)(N-1,p1,p3,p2) 移動(dòng)(p1,p3) 移動(dòng)(N-1,p2,p1,p3) } main() { hanoi(N,“A”,“B”,“C”) 返回0 }