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层的
跪求编程大神~用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++)...