资源描述:
《汉诺塔的图形解法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、汉诺塔的图形解法#include"stdio.h"#include"dos.h"#include"conio.h"/*定义两个数组a[4][11],b[4],其中a[4][11]用来指向柱子上的内容(碟片),b[4]用来标志柱子上的碟片高度*/inta[4][11]={{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0}},b[4]={0,0,0,0};FILE*TEMP;/*定义一个移除碟片的函数,vo
2、idremovef(起始位置,高度,碟片的大小)*********************************/voidremovef(charstart,intheight,intsize){ intzb_x; textbackground(3); switch(start) { case'A':zb_x=11;break; case'B':zb_x=32;break; case
3、'C':zb_x=53;break; } for(;size>0;size--) { gotoxy(zb_x-size,11-height); cprintf("%c",0); gotoxy(zb_x+size,11-height); cprintf("%c",0); } delay(35000);}/*定义一个重建碟片的函数,voidcreate
4、f(移动到位置,高度,碟片的大小)*******************************/voidcreatef(charend,intheight,intsize){ intzb_x; textbackground(0); switch(end) { case'A':zb_x=11;break; case'B':zb_x=32;break; case'C':zb_x=53;b
5、reak; } for(;size>0;size--) { gotoxy(zb_x-size,11-height); cprintf("%c",0); gotoxy(zb_x+size,11-height); cprintf("%c",0); } delay(35000);}/*汉诺塔递归算法,并讲结果写入文件指针TEMP指向的文件***
6、******************************************/intmove(intN,intA,intB,intC){ if(N==1) { fputc(A,TEMP); fputc(C,TEMP); } else { move(N-1,A,C,B); fputc(A,TEMP); fputc(C,TEMP); move(N-1,B,A,C); }}main(){ voidremovef(char,int,int);
7、 voidremovef(char,int,int); intmove(int,int,int,int); intN,i,j,k,m,n,hei,counter=0,height0,height1,size,disksize; charcur_char; /*建立一个用于存储递归函数输出的文件********************************************************/ TEMP=fopen("D:\MDL.txt","w"); fclose(TEMP); /
8、*让用户输入汉诺塔的层数,并初始化a[1][]的内容***********************************************/ printf("inpu