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;}
阅读全文
0 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)
- 解决安卓真机测试INSTALL_CANCELED_BY_USER错误
- 5.23 人工智能 ——江湖上传说再起
- JavaScript:基本使用
- pandas.DataFrame.to_json按行转json
- npm模块之http-proxy-middleware使用教程(译)
- 1050. 螺旋矩阵(25)
- Unity3d 禁止头盔Position仅仅实现旋转(Only Rotation)
- 点击应用报App isn't installed,或者Run完并成功后应用没有在手机上安装标问题
- 爱立信和威瑞森电信使用VR流式车来测试5G
- 3D立体相册,一个可旋转的立体相册
- 机器学习笔记(十五)规则学习
- 功耗测试
- java 实现排序二叉树的插入和前序,中序,后序遍历
- POJ 1363 Rails 笔记