zoukankan      html  css  js  c++  java
  • 1105 Spiral Matrix (25 分)

    考察点:试除法求约数、方向数组。

    类似题:756. 蛇形矩阵

    const int N=10010;
    int a[N];
    int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
    int k,n,m;
    int cnt;
    
    bool check(int x,int y)
    {
        return x>=0 && x<n && y>=0 && y<m;
    }
    
    void dfs(int x,int y,int dir,vector<vector<int>> &res)
    {
        res[x][y]=a[cnt++];
    
        int a=x+dx[dir],b=y+dy[dir];
        if(!check(a,b) || res[a][b])
        {
            dir=(dir+1)%4;
            a=x+dx[dir],b=y+dy[dir];
        }
    
        if(check(a,b) && !res[a][b])
            dfs(a,b,dir,res);
    }
    
    int main()
    {
        cin>>k;
        for(int i=0;i<k;i++) cin>>a[i];
        sort(a,a+k,greater<int>());
    
        for(int i=1;i*i<=k;i++)
            if(k % i == 0)
            {
                m=i;
                n=k/i;
            }
    
        vector<vector<int>> res(n,vector<int>(m));
        dfs(0,0,0,res);
    
        for(int i=0;i<res.size();i++)
        {
            for(int j=0;j<res[i].size();j++)
                if(j) cout<<' '<<res[i][j];
                else cout<<res[i][j];
            cout<<endl;
        }
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    uwsgi配置
    sed_shell三剑客
    grep_shell三剑客
    awk_shell三剑客
    spring(二)
    spring(一)
    5G的科普
    应用层协议基础
    IP地址相关运算(如VLSM,超网汇总)
    ARP协议基础
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14491531.html
Copyright © 2011-2022 走看看