C程序设计,求编程高手帮忙!

Hanoi(汉诺)塔问题。这是一个古典的数学问题,是一个用递归法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座A、B、C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求编程序打印出移动的步骤。

以上是题目,顺便把程序运行图发一下,谢谢!!

#include <stdio.h>
int main()
{
  void hanoi(int n,char one,char two,char three);         // 对hanoi函数的声明
  int m;
  printf("input the number of diskes:");
  scanf("%d",&m);
  printf("The step to move %d diskes:\n",m);
  hanoi(m,'A','B','C');
}

void hanoi(int n,char one,char two,char three)          // 定义hanoi函数 
    // 将n个盘从one座借助two座,移到three座
 {
  void move(char x,char y);       // 对move函数的声明
  if(n==1)
     move(one,three);
  else
    {
     hanoi(n-1,one,three,two);
     move(one,three);
     hanoi(n-1,two,one,three);
    }
 }

 void move(char x,char y)           //  定义move函数
 {
   printf("%c-->%c\n",x,y);
 }

题目中的64,那移动的次数要2^64-1次啊有木有

给你运行 一个3层的

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-17

#include "stdio.h"
#define N 4
void move(char sour,char stel,char na,int n)
{
if(n>1)
move(sour,na,stel,n-1);
printf("%c->%c\n",sour,stel);
if(n>1)
move(na,stel,sour,n-1);
}
void main()
{
move('A','B','C',N);
}

 你把N改成64自己运行去

跪求编程大神~用c语言编个程序
Elem_Type *array,int len){ for(int i=0; i<len; i++) if(array[i] == num) return i; \/\/return -1;\/\/没有找到} \/\/前序遍历 中序遍历 中序数组长度BiTree *Resume_BiTree(Elem_Type *front,Elem_Type *center,int len){ if(len <= 0) return ...

C语言程序设计 编程,我是C语言初学者,请高手们帮我为下面这道题编个程 ...
include <stdio.h> int main(){ char c;int x = 0, y = 0;printf("***请按提示选择***\\n");printf("a---本校全日制学生\\n");printf("b---本校夜大学生\\n");printf("c---外校学生\\n");scanf("%c", &c);if(c == 'a'){ printf("你是本校全日制学生,不收付费 ^_^...

编写一个C程序,输入a,b,c三个值,输出最大者。求高人指点
include<stdio.h>int main() {int max(int x,int y,int z);int a,b,c,d; scanf("%d,%d,%d",&a,&b,&c); \/\/---1、引号位置错了,2、输入要以逗号分隔,如3,5,4 d=max(a,b,c); printf("max=%d\\n",d); return 0; }int max(int x,int y,int z) {...

电脑C语言编程,求高手帮忙
1.include<stdio.h> void main(){ int n[8],maxn=0,minn=0,detn;float score[8],max,min,aver=0.0,det,detm;printf("输入裁判号及分数:\\n");scanf("%d%f",&n[0],&score[0]);max=min=score[0];for(int i=1;i<8;i++){ scanf("%d%f",&n[i],&score[i]);if(max<...

编程高手请进!(C语言)
1.include <stdio.h> include<stdlib.h> include<ctype.h> main(){ int count;\/*猜数字的次数*\/ int number;\/*系统产生的随机数字*\/ int guess;\/*程序员输入数字*\/ char yes='Y';clrscr();printf("\\nNow let us play the game.\\n Guess the number:");while (toupper(yes)=='Y'...

大学c语言编程,高手帮帮忙,要求编写五十行以上
int ReadDat(int *a);int JsValue(int *a,int *b);void WriteDat(int *b,int cnt);int main(void){ int cnt;int *a=malloc(NUMBER*sizeof(int));\/\/数组a有一百个成员,相对较大,所以采用动态非配 int *b=malloc(NUMBER*sizeof(int));ReadDat(a);cnt=JsValue(a,b);WriteDat(b...

c语言编程求助。。。高手。。。(请编写函数fun,它的功能是计算下列级数...
double fun(double x,int n){ int i;int j;double faci=1.0;double s=1.0;for(i=1;i<=n;i++){ faci=1.0;if(i>0){ for(j=1;j<=i;j++){ faci*=j;} } s+=pow(x,i)\/faci;} return s;} int main(){ double x;int n;scanf("%lf%d",&x,&n);printf("%lf\\n"...

C语言课程设计,求帮忙写完代码
C语言课程设计,求帮忙写完代码 100 自己写了一段,请高手帮忙啦#include<stdio.h>enumMajor{Soft=1,Net,Jike};\/\/专业enumMajormajor;#defineARRAYSIZE100\/\/数组大小typedefstruct{charszNo[11];charszName[21];enumMajo... 自己写了一段,请高手帮忙啦#include <stdio.h>enum Major{Soft=1, Net, Jike}; ...

跪求C语言编程高手帮忙编个小程序,大一年级的
int main(){ char ch[100];char iTemp;int i,j,a,b,c,d,e,iPos,tot;i=a=b=c=d=e=0;printf("请输入一串字符:\\n");while((ch[i++]=getchar())!='\\n');for(j=0;j=65&&ch[j]<=90)a++;else if(ch[j]>=97&&ch[j]<=1220)b++;else if(ch[j]>=48&&ch[j]<=...

急需C语言高手帮助(算法设计与分析)
void countNum(long a) \/\/递归计算 {long b;b=a%10;count[b]++;a=a\/10;if(a!=0)countNum(a);} void main(){int i;long j,page;for(i=0;i<10;i++)count[i]=0;puts("输入总页码数:");scanf("%ld",&page);for(j=page;j>0;j--)countNum(j);for(i=0;i<10;i++)...

相似回答