pat basic 1050

Posted miao-xixixi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pat basic 1050相关的知识,希望对你有一定的参考价值。

 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
",s[i][j]);
        }
    }
        
    return 0;
}

 

 

 

技术图片

 

以上是关于pat basic 1050的主要内容,如果未能解决你的问题,请参考以下文章

PAT Basic 1050 螺旋矩阵 (25 分)

PAT Basic 1049

PAT Basic 1078

PAT1050 : String Subtraction

PAT甲级1050 String Subtraction (20 分)

PAT练习--1050 String Subtraction (20 分)