码迷,mamicode.com
首页 > 其他好文 > 详细

pat basic 1050

时间:2020-03-14 16:29:57      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:info   五个   技术   pac   pat   style   alt   namespace   algo   

 pat basic 1050

 螺旋矩阵

 

本来没头绪,后来看了视频,然后有思路了;

思路:总共有四个方向的移动,考虑上下左右边界~

但是,还是不能全通过,害  * - *,搞了四五个小时,还是没找出来。

代码如下:

#include<iostream> 
#include<cmath>
#include<algorithm>
using namespace std;
int s[10000][10000]={0};
int a[10010];
int main(){
    int c,row,col;
    scanf("%d",&c) ;
    for( col=sqrt(c);col>0;col--){
        if(c%col==0){
            row=c/col;
            break;
        }
    } 
    int top=0,bottom=row-1,left=0,right=col-1;
    for(int i=0;i<c;i++)
    scanf("%d",&a[i]);
    int k=0;
    sort(a,a+c,greater<int>() );
    while(top<=bottom&&left<=right)    
    { for(int j=left;j<=right;j++)
        {  s[top][j]=a[k];
            k++;
        }
        top++;
    for(int i=top;i<=bottom;i++){
        s[i][right]=a[k];
        k++;
    }
    right--;
    for(int j=right;j>=left;j--){
        s[bottom][j]=a[k];
        k++;
    }
        bottom--;
    for(int i=bottom;i>=top;i--){
        s[i][left]=a[k];
        k++;
    }
    left++;
    }
    for(int i=0;i<row;i++){
        for(int j=0;j<col;j++){
        if(j!=col-1)
        printf("%d ",s[i][j]);
        else
        printf("%d\n",s[i][j]);
        }
    }
        
    return 0;
}

 

 

 

技术图片

 

pat basic 1050

标签:info   五个   技术   pac   pat   style   alt   namespace   algo   

原文地址:https://www.cnblogs.com/miao-xixixi/p/12492638.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!