1050. 螺旋矩阵(25)
来源:互联网 发布:网络舆情相关政策 编辑:程序博客网 时间:2024/05/21 17:09
#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;}}i=0,j=0;//一定要重置为0while(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++;}for(i=0;i<m;i++){for(j=0;j<n;j++){cout<<matrix[i][j];if(j<n-1) cout<<" ";//结尾不能有空格}cout<<endl;}return 0;}
阅读全文
1 0
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25)
- 堆排序和TopK问题
- Git永久删除文件(包括历史记录)
- 图片的简单爬取
- 如何保护Java代码
- Python的多线程
- 1050. 螺旋矩阵(25)
- Predix UI 控件库如何运用到产品开发流程中?
- ViewPager使用讲解
- 子数组之和
- String[]转String最简方法
- 搜索 D题
- 剑指offer面试题4:替换空格和合并两个有序数组
- yk
- 1055. 集体照 (25)