文章

52

粉丝

68

获赞

22

访问

11.5k

头像
旋转方阵 题解:方块收缩模拟输出
P1216 福州大学2018年机试题
发布于2025年1月27日 13:07
阅读数 93

#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;
        }
    }
}

本题我们如果按照他的规则直接写,那么是根本没法写的,因为不符合循环的同一性,那么我们如何获取同一性呢?我们可以发现,假如把这个整体进行切割成一圈一圈的,那么就可以得到一个循环的情况了,然后我们按照圈数进行循环写入即可得到结果。至于最后的输入,注意他们是存在对齐的即可

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发