Exemple #1
0
/* 按规则搬到塔座z上。y可用作辅助塔座 */
void Hanoi(int n, char x, char y, char z)
{
	if (n == 1)
		move(x, 1, z);
	else {
		Hanoi(n-1, x, z, y);
		move(x, n, z);
		Hanoi(n-1, y, x, z);
	}
}
Exemple #2
0
void Hanoi(int n, char x, char y, char z) // move x from x to z, bypass y
{
	void move(char x, int m, char y);
	if(n==1) {
		move(x,1,z);
	} else {
		Hanoi(n-1,x,z,y);
		move(x,n,z);
		Hanoi(n-1,y,x,z);
	}
}
Exemple #3
0
void Hanoi(int n, struct Tower *from, struct Tower *buf, struct Tower *to)
{
	if(n==1)
		move(from, to);
	else
	{
		Hanoi(n-1, from, to, buf);
		move(from, to);
		Hanoi(n-1, buf, from, to);
	}
}
Exemple #4
0
void Hanoi(int n, char A, char B, char C)
{
    if (n == 1)         //如果是1,
        printf("盘子%d,%c->%c\n",n,A,C);          //直接将A柱子上的盘子从A移到C;
    else
    {
        Hanoi(n - 1, A, C, B);                    //将A柱子上的n-1个盘子借助C移到B;
        printf("盘子%d,%c->%c\n", n, A, C);               //直接将A柱子的盘子从A移到C;
        Hanoi(n - 1, B, A, C);         //将B柱子上的n-1个盘子借助A移到C;
    }

    return;
}
Exemple #5
0
void
Hanoi(int n,int *source, int *dest, int *spare)
{
	int i;
	if(n==1){
		Move(source,dest);
		return;
	}

	Hanoi(n-1,source,spare,dest);
	Move(source,dest);
	Hanoi(n-1,spare,dest,source);
	return;
}
Exemple #6
0
int main(int argc, char *argv[])
{
	int n;
	printf("3个塔座为a、b、c,圆盘最初在a座,借助b座移到c座。请输入圆盘数:");
	scanf("%d", &n);
	Hanoi(n,'a', 'b', 'c');
	return 0;
}
Exemple #7
0
int main()
{
	void Hanoi(int n, char x, char y, char z);
	printf("How many scales the Hanoi has on X?\n");
	int n;
	scanf("%d",&n);
	Hanoi(n,'X','Y','Z');
	return 0;
}
Exemple #8
0
int main()
{
    char ch1 = 'A';
    char ch2 = 'B';
    char ch3 = 'C';
    int n;

    printf("请输入要移动盘子的个数:");
    scanf("%d",&n);

    Hanoi(n, 'A', 'B', 'C');



    return 0;
}
Exemple #9
0
/*
void Move(int n, int start, int goal, int temp)
{
    if(n==0) return;
    Move(n-1, start, temp, goal);
    printf("%c -> %c\n", 'a'+start-1, 'a'+goal-1);
    Move(n-1, temp, goal, start);
}
*/
int main()
{
//    int i;
    int n;
    ERROR.N = -1; /* ERROR是ElementType的特殊值,标志错误 */
   
    scanf("%d", &n);
//    start = clock(); /* 开始计时 */
//    for (i=0; i<10; i++)
    Hanoi(n);
/*    Move(n, 1, 3, 2); */
//    stop = clock();     /* 停止计时 */
//    duration = ((double)(stop - start))/CLK_TCK; /* 计算运行时间 */
//    printf("duration=%lf\n", duration/10);

    return 0;
}
Exemple #10
0
void main()
{
	struct Tower *T1, *T2, *T3;
	int i;
	T1=create('A');
	T2=create('B');
	T3=create('C');
	for(i=N; i>0; i--)
	{
		push(T1, i);
	}
	Hanoi(N, T1, T2, T3);
	free(T1);
	free(T2);
	free(T3);
	free(T1->plate);
	free(T2->plate);
	free(T3->plate);
}
Exemple #11
0
void main()
{
  a = 16807;
  m = 127;
  m = m * 256 + 255;
  m = m * 256 + 255;
  m = m * 256 + 255;
  q = m / a;
  r = m % a;
  Factorial(7);
  WriteLong(res);
  WriteLine();
  WriteLine();
  FibRec(11);
  WriteLong(res);
  WriteLine();
  WriteLine();
  Hanoi(3);
  WriteLine();
}
Exemple #12
0
int
main()
{
	int i;

	/* initialize the towers */
	for(i=0;i<N;i++)A[i]=i+1;
	for(i=0;i<N;i++)B[i]=0;
	for(i=0;i<N;i++)C[i]=0;

	printf("Solution of Tower of Hanoi Problem with %d Disks\n\n",N);

	/* Print the starting state */
	printf("Starting state:\n");
	PrintAll();
	printf("\n\nSubsequent states:\n\n");

	/* Do it! Use A = Source, B = Destination, C = Spare */
	Hanoi(N,A,B,C);
	return 0;
}