新做的回形数
程序代码:
//回形数 #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; }