河內塔(堆疊)

Mars
請問如何印出每座塔移動的過程?
只會寫到這....懇請各位大大協助
感謝
EX:
A塔 3 2 1
B塔 0 0 0
C塔 0 0 0




#include"stdio.h"
#include"stdlib.h"
#include"string.h"

void hanoi(int n , char from , char mid , char to);

int main(){
	int n,i;
	int *a,*b,*c;
	printf("<< 河內塔遊戲 2.0 >>\n\n");
	printf("請輸入圓盤數量: ");
	scanf("%d",&n);
	a = (int*)malloc(sizeof(int)*n);
        b = (int*)malloc(sizeof(int)*n);
        c = (int*)malloc(sizeof(int)*n);
        memset(a, 0, sizeof(int)*n);
        memset(b, 0, sizeof(int)*n);
        memset(c, 0, sizeof(int)*n);
    
	hanoi(n , 'A' , 'B' ,'C');
	printf("\n");
	return 0;
}

void hanoi(int n , char from , char mid , char to )
{// 在搬動第n個圓盤時
	if(n==0)
	{
		return ;
	}
	//先將第n-1個圓盤搬到”中間塔”// 
	hanoi(n-1 , from , to ,mid );
	push(pop(from),to);
	//將自己搬到”目標塔”// 
	printf("圓盤 %d 從 %c塔 -> %c塔\n",n , from , to);
	//再將第n-1個圓盤從”中間塔”搬到”目標塔”// 
	hanoi(n-1 , mid , from , to );
}


回到頂部