/*N*N的数字方阵
类似于:
1 8 7
2 9 6
3 4 5
*/
#include <stdio.h>
#define n 6
int p[n][n];
void fill(int number,int begin,int size)
{
if(size==0)
return;
if(size==1)
{
p[begin][begin]=number;
return;
}
int h,v,i;//h为行,v为列
h=begin;
v=begin;
p[h][v]=number;
number++;
for(i=0;i<size-1;i++)
{
h++;
p[h][v]=number;
number++;
}
for(i=0;i<size-1;i++)
{
v++;
p[h][v]=number;
number++;
}
for(i=0;i<size-1;i++)
{
h--;
p[h][v]=number;
number++;
}
for(i=0;i<size-2;i++)//每一圈的最后一行已经填充了两个数,只需再填充size-2个数
{
v--;
p[h][v]=number;
number++;
}
fill(number,v,size-2);
}
int main()
{
fill(1,0,n);
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",p[i][j]);
}
printf("\n");
}
return 0;
}
数字旋转方阵
最新推荐文章于 2023-10-07 18:04:00 发布