#include<stdio.h>
#include<iostream>
using namespace std;
#define N 10
int data[N][N] = {0};
void Full(int number,int begin,int size);//从number开始填写size阶方阵,左上角的下标为(begin,begin)
int main()
{
Full(1,0,N);
for(int i=0; i<N;i++){
for(int j=0; j<N;j++){
cout<<data[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
void Full(int number,int begin,int size)
{
int i,j,k;
if(size == 0)
return;
if(size == 1)
{
data[begin][begin]=number;//只填写number
return;
}
i = begin;j = begin;//初始化左上角下标
for(k = 0; k<size-1; k++)//填写区域A,共有size-1个数
{
data[i][j] = number;
number++;i++;//行下标加一
}
for(k = 0;k<size-1;k++)//填写区域B
{
data[i][j] = number;
number++;j++;//列下标加一
}
for(k = 0;k<size-1;k++)//区域C
{
data[i][j] = number;
number++;i--;//行下标减一
}
for(k = 0; k<size-1;k++)//区域D
{
data[i][j] = number;
number++;j--;//列下标减一
}
Full(number,begin+1,size-2);//递归求解
}
数字旋转方阵
最新推荐文章于 2022-09-05 21:59:37 发布