1050. 螺旋矩阵(25)

来源:互联网 发布:阿里云怎么修改手机号 编辑:程序博客网 时间:2024/06/06 03:50

#include<math.h> //sqrt#include<stdlib.h> //快速排序qsort#include<stdio.h> //指针,malloc#include<iostream>using namespace std;/*1.降序排序  2.算N=m*n,且(m-n)min  3.按 右-下-左-上 填充*/int cmp(const void *a,const void *b){ return  *((int *)a)<*((int *)b)?1:-1; //1表示按a<b,-1表示按a>b}int minFactor(int N){int n=sqrt(N); int j;for(j=n;j>=1;j--){if(N%j==0){return j;}else{continue;}}return -1;}int main(){int N,m,n,i=0,j=0,position=0,direct=0;cin>>N;int * num=(int *) malloc (N*sizeof(int));for(i=0;i<N;i++) cin>>num[i];qsort(num,N,sizeof(int),cmp);if(minFactor(N)!=-1){n=minFactor(N); m=N/n;}else{cout<<"Error!"<<endl;return 0;}int **matrix=(int **) malloc (m*sizeof(int *));for(i=0;i<m;i++){matrix[i]=(int *)malloc(n*sizeof(int));for(j=0;j<n;j++){matrix[i][j]=0;}}while(position<N){direct%=4;if(direct==0){for(;j<n && matrix[i][j]==0;j++) matrix[i][j]=num[position++];i++;j--;}else if(direct==1){for(;i<m && matrix[i][j]==0;i++) matrix[i][j]=num[position++];i--;j--;}else if(direct==2){for(;j>=0 && matrix[i][j]==0;j--) matrix[i][j]=num[position++];i--;j++;}else{for(;i>=0 && matrix[i][j]==0;i--) matrix[i][j]=num[position++];i++;j++;}direct++;} /*    int direction = 0; //0:right, 1:down, 2:left, 3:up      i=0;j=0;      while( position < N)      {          direction %= 4;          if(direction == 0)          {              for(; j < n && matrix[i][j] == 0; j++) matrix[i][j] = num[position++];             j--;i++;          }          else if(direction == 1)          {              for(; i < m && matrix[i][j] == 0; i++) matrix[i][j] = num[position++];              i--; j--;          }          else if(direction == 2)          {              for(; j >= 0 && matrix[i][j] == 0; j--) matrix[i][j] = num[position++];               j++; i--;          }          else          {              for(; i >= 0 && matrix[i][j] == 0; i--) matrix[i][j] = num[position++];                i++; j++;          }          direction ++;      } */for(i=0;i<m;i++){for(j=0;j<n;j++){cout<<matrix[i][j]<<" ";}cout<<endl;}return 0;}


原创粉丝点击