#include <stdio.h>
#define N 7
char a[] ={'1','2','3','4','5','6','7'};
char b[] ={'0','0','0','0','0','0','0'};
char c[] ={'0','0','0','0','0','0','0'};
int step = 0;
void print (int n)
{
int i;
printf("\nSTEP%d",step++);
printf("\na:");
for(i = 0 ; i < n;i++)
{
printf("<",a[i]);
}
printf("\nb:");
for(i = 0 ; i < n;i++)
{
printf("<",b[i]);
}
printf("\nc:");
for(i = 0 ; i < n;i++)
{
printf("<",c[i]);
}
printf("\n=============================================================\n");
}
void fprint(int n,FILE *fp)
{
int i;
fputs("\na:",fp);
for(i = 0;i < n;i++)
{
fputc(a[i],fp);
}
fputs("\nb:",fp);
for(i = 0;i < n;i++)
{
fputc(b[i],fp);
}
fputs("\nc:",fp);
for(i = 0;i < n;i++)
{
fputc(c[i],fp);
}
}
void move (int n,char a[],char b[],char c[],FILE *fp)
{
if(n > 0)
{
move(n-1,a,c,b,fp);
c[n-1] = a[n-1];
a[n-1] = '0';
print(N);
fprint(N,fp);
move(n-1,b,a,c,fp);
}
}
void main()
{
FILE *fp;
int i;
if( (fp = fopen ("step","w")) == NULL)
{
fprintf(stderr,"不能打开文件!");
}
printf("\n=======================HAONL TOWER=======================");
print(N);
fprint(N,fp);
move(N,a,b,c,fp);
fcloseall();
}