1105 Spiral Matrix (25 分)难度: 一般 / 知识点: 模拟

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1105 Spiral Matrix (25 分)难度: 一般 / 知识点: 模拟相关的知识,希望对你有一定的参考价值。


https://pintia.cn/problem-sets/994805342720868352/problems/994805363117768704
又是乙级的原题。

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int m,n,s,x,a[N][105];
vector<int>ve;
int dx[4]=0,1,0,-1;
int dy[4]=1,0,-1,0;
int main(void)

    cin>>s;
    for(int i=1;i<=s/i;i++) if(s%i==0) m=i,n=s/i;
    if(m<n) swap(m,n);
    for(int i=0;i<s;i++) cin>>x,ve.push_back(x);
    sort(ve.begin(),ve.end());
    reverse(ve.begin(),ve.end());
    int x=0,y=0,d=0,idx=0;
    while(idx<ve.size())
    
        a[x][y]=ve[idx];
        int tempx=x+dx[d],tempy=y+dy[d];
        if(tempx<0||tempx>=m||tempy<0||tempy>=n||a[tempx][tempy]) d=(d+1)%4;
        x=x+dx[d],y=y+dy[d],idx++;
    
    for(int i=0;i<m;i++)
    
        for(int j=0;j<n;j++) 
        
            if(j) cout<<" ";
            cout<<a[i][j]; 
        
        cout<<endl;
    
    return 0;

以上是关于1105 Spiral Matrix (25 分)难度: 一般 / 知识点: 模拟的主要内容,如果未能解决你的问题,请参考以下文章

PAT 甲级 1105 Spiral Matrix (25分)(螺旋矩阵,简单模拟)

1105 Spiral Matrix (25 分)难度: 一般 / 知识点: 模拟

A1105 Spiral Matrix (25分)

PAT 1105 Spiral Matrix

PAT_A1105#Spiral Matrix

1105. Spiral Matrix (25)