文章
52
粉丝
68
获赞
22
访问
11.5k
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
vector<vector<int>> a(n,vector<int>(n));
int k=1,r=n;
for(int r=n;r>=0;r--){
for(int i=n-r;i<r;i++)a[i][n-r]=k++;
for(int i=n-r+1;i<r;i++)a[r-1][i]=k++;
for(int i=r-2;i>=n-r;i--)a[i][r-1]=k++;
for(int i=r-2;i>=n-r+1;i--)a[n-r][i]=k++;
}
for(auto x:a){
for(auto y:x)printf("%-4d", y);
cout<<endl;
}
}
}
本题我们如果按照他的规则直接写,那么是根本没法写的,因为不符合循环的同一性,那么我们如何获取同一性呢?我们可以发现,假如把这个整体进行切割成一圈一圈的,那么就可以得到一个循环的情况了,然后我们按照圈数进行循环写入即可得到结果。至于最后的输入,注意他们是存在对齐的即可
登录后发布评论
暂无评论,来抢沙发