C語言 漢諾塔自動遞迴演示程式 原始碼

2021-10-25 07:39:14 字數 2311 閱讀 2991

嘗試寫出視覺化的小演算法

程式介紹:【c語言】用c語言實現漢諾塔自動遞迴演示程式

/*------------------------------------

project : 漢諾塔演示軟體;

language: c語言

author: 404name

疊64層需要開全視窗並且將字型大小調整為6

------------------------------------0-*/

#include

#include

int len, width, left, mid, right, time;

char map[80]

[1000];

int next[4]

[2]=

,,,}

;//上0下1左2右3;

int turn[2]

[3]=

,//a -> b b -> c a -> c 上右下};

//b -> a c -> b c -> a 上左下

void

gotoxy

(int x,

int y)

intinit()

}}gotoxy(0

,0);

//容易出現東西卡頓

for(

int i =

0; i <= width; i++

)return n;

}void

play

(int x,

int y)

}for

(i =

1, j = x; i <= width; i++)}

while(1

)else

for(k =

0; k < mid -

2; k++

)gotoxy

(j, i)

;sleep

(time)

;for

(k =

0; k < mid -

2; k++

) i = i + next[turn[turn_0]

[n]][0

];j = j + next[turn[turn_0]

[n]][1

];gotoxy

(j, i)

;sleep

(time)

;for

(k =

0; k < mid -

2; k++)}

n++;//改變方向;

if(i == tx && j == ty)

return;if

(turn_0 ==0)

for(k = mid -

3; k >=

0; k--

)else

for(k =

0; k < mid -

2; k++

)gotoxy

(j, i)

;for

(k =

0; k < mid -

2; k++

)sleep

(time)

; i = i + next[turn[turn_0]

[n]][0

];j = j + next[turn[turn_0]

[n]][1

];gotoxy

(j, i)

;for

(k =

0; k < mid -

2; k++

)printf

("%c"

, map[i]

[j + k]);

sleep

(time);}

}void

move

(int a,

int b,

int c,

char aa,

char bb,

char cc,

int n)

move

(a, c, b, aa, cc, bb, n -1)

;gotoxy(0

, width +1)

;printf

("from %c to %c"

, aa, cc)

;play

(a, c)

;move

(b, a, c, bb, aa, cc, n -1)

;gotoxy(0

, width +1)

;}intmain()

C語言 用C語言實現漢諾塔自動遞迴演示程式

1.變介面大小依照輸入遞迴數改變。2.漢諾塔自動移動演示。3.採用gotoxy實現流暢重新整理。4.保留文字顯示遞迴流程 部落格鏈結 輸入要遞迴的漢諾塔數目,在原來的漢諾塔基礎上新增move play函式展示遞迴,用next陣列儲存每種移動狀態。對應的從哪到哪可自動對應相應的移動方式自動移動。ini...

C 遞迴,漢諾塔

a為存放盤子的塔,b為目標塔,c為輔助塔 演算法分為三步 一 將a上n 1個盤子全部放到c塔上 二 將a上剩下的乙個盤子放到b塔上 三 將c塔上的盤子全部放到b塔上 注 不需要考慮如何移動n 1個盤子 遞迴過程 首先,將a上n 1個盤子放到c上,然後將a上剩下的乙個盤子放到b上,然後可以看成a為輔助...

漢諾塔 遞迴 c

1.遞迴終止條件 沒有安排好的盤子只剩乙個。此時將其從a,放到c 2.子問題 先將n 1個盤子從a經過中轉站c放到b,再將n 1個盤子從b經中轉站a放到c。3.cout的是從出發點到中轉站,n 1時cout從出發點到終點。輸入 盤子的數量n 輸出 每一步移動 輸入範例 2輸出範例 a b a c b...