成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

漢諾塔遞歸算法c語言 漢諾塔遞歸算法?

漢諾塔遞歸算法?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輸入磁盤數(shù):”)

18 scanf(%d“,&n)

19 Hanoi(n,%a”,%B“,%C”)

20 return 0

21}

復(fù)制代碼

使用三層結(jié)構(gòu)對其稍加修改?#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){ 移動(N==1) 移動(p1,p3) 移動(N-1,p1,p3,p2) 移動(p1,p3) 移動(N-1,p2,p1,p3) }} 讓河內(nèi)塔板移動是D1,D2,D3,。。。DN從上到下,和(n>0)注意,第一個k板是s(k)(k>1)。遞歸的思想是假設(shè)前n-1塊板是s(n-1),把板從a移到C,具體的移動方法是:(1)s(n-1):a=>B(2)DN:a=>C(3)s(n-1):B=>C實(shí)際上是一個具有四個參數(shù)f(n,a,B,C)的函數(shù)。第一步和第三步實(shí)際上又回到了n-1層河內(nèi)塔的問題。以第一步為例,將前n-2塊板看作一個整體s(n-2),問題就變成了將板從a移到B,此時需要用C作為橋。移動方法如下:(4)s(n-2):a=>C(5)d(n-1):a=>B(6)s(n-2):C=>B。實(shí)際上,(1)、(2)、(3)的步驟沒有區(qū)別,但是[bridge]B和C是交換的:通過(1)、(2)、(3)總結(jié)出函數(shù)式:(1)f(n-1,a,C,B)//參數(shù)a是原來的位置,C是橋,而B是目的地(2)n:a=>C//從原位置取底板=>目的地(3)f(n-1,B,a,c)//參數(shù)B是原位置,a是橋,c是目的地,實(shí)際上所有遞歸算法都可以轉(zhuǎn)化為非遞歸算法。一些低級語言(如匯編)沒有遞歸算法。