/*lijingjing
其递归的是圈/层。利用层数为0来规定递归结束
*/
#include <iostream>
using namespace std;
int a[100][100];
void sum(int b,int s,int t)//开始位置 层数 赋值数
{
int j;
int h=b,v=b;
if(s==0) return;
if(s==1)
{
a[b][b]=t;return;
}
for(j=1;j<s;j++)//j代表个数因为其每行列的第一个数都以在所有个数少1
{
a[h][v]=t;v++;t++;
}
for(j=1;j<s;j++)
{
a[h][v]=t;h++;t++;
}
for(j=1;j<s;j++)
{
a[h][v]=t;v--;t++;
}
for(j=1;j<s;j++)
{
a[h][v]=t;h--;t++;
}
sum(b+1,s-2,t);
}
void main(){
int n;
int b=0;
cin>>n;
sum(b,n,b);
cout<<"顺时针内方阵"<<endl;
for(int i=b;i<n;i++)
{
for(int j=b;j<n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
cout<<"逆时针内方阵"<<endl;
for(int i=b;i<n;i++)
{
for(int j=b;j<n;j++)
{
cout<<a[j][i]<<" ";
}
cout<<endl;
}
cout<<"顺时针外方阵"<<endl;
for(int i=b;i<n;i++)
{
for(int j=b;j<n;j++)
{
cout<<n*n+1-a[i][j]<<" ";
}
cout<<endl;
}
cout<<"逆时针外方阵"<<endl;
for(int i=b;i<n;i++)
{
for(int j=b;j<n;j++)
{
cout<<n*n+1-a[i][j]<<" ";
}
cout<<endl;
}
}
多项旋转方阵
最新推荐文章于 2024-07-12 19:56:46 发布