回型矩阵问题
题目描述
给你一个整数n,按要求输出n∗n的回型矩阵
输入描述:
输入一行,包含一个整数n
1<=n<=19
输出描述:
输出n行,每行包含n个正整数.
示例
输入
4
输出
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
解决方法
类似于递归,回型矩阵其实是由许多环组成,这些环的逻辑组成是一样的,设置环大小的参数start,end,再写入这个环上、下、左、右的逻辑,判断环的个数,就可以了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
float count;
count=ceil((float)n/2.0);
int start=1,end=n,ans=1,a[100][100];
while(count--)
{
for(int i=start;i<=end;i++)
{
a[start][i]=ans;
ans++;
}
//回环右部
for(int i=start+1;i<=end;i++)
{
a[i][end]=ans;
ans++;}
//回环下部
for(int i=end-1;i>=start;i--)
{
a[end][i]=ans;
ans++;
}
//回环左部
for(int i=end-1;i>start;i--)
{
a[i][start]=ans;
ans++;
}
//回环上部
end--;
start++;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
}