新做的回形数
程序代码://回形数
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int arr[MAX][MAX];
int inc;
void init()
{
int i,j;
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++) arr[i][j]=0;
}
inc=1;
}
int judge()
{
int flag;
int i,j;
flag=0;
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++)
if(arr[i][j])
flag++;
}
if(flag==(MAX*MAX)) return 1;
else return 0;
}
void process(int x,int y)
{
int i;
int line,row;
line=x;row=y;
for(i=row;i<MAX;i++)
{
if(!arr[line][i])
{
arr[line][i]=inc++;
row=i;
}
else
{
row=i-1;
break;
}
}
for(i=line+1;i<MAX;i++)
{
if(!arr[i][row])
{
arr[i][row]=inc++;
line=i;
}
else
{
line=i-1;
break;
}
}
for(i=row-1;i>=0;i--)
{
if(!arr[line][i])
{
arr[line][i]=inc++;
row=i;
}
else
{
row=i+1;
break;
}
}
for(i=line-1;i>=0;i--)
{
if(!arr[i][row])
{
arr[i][row]=inc++;
line=i;
}
else
{
line=i+1;
break;
}
}
if(judge()) return ;
process(line,row+1);
}
int main()
{
int i,j;
init();
process(0,0);
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++) printf("%d\t",arr[i][j]);
printf("\n");
}
printf("\n");
system("pause");
return 0;
}







