PAT乙级 1050 螺旋矩阵(25)
来源:互联网 发布:怎么监控数据库的变化 编辑:程序博客网 时间:2024/05/20 17:07
/*思路:排序后,用四个while填充
填充顺序a b c d e f:
aaa deb dfb ccb*///PAT-1-1050#include <iostream>#include <algorithm>#include <string>#include <math.h>using namespace std;bool compare(int a,int b){ return a>b;}int main(){ int n; cin>>n; int num[n]; for (int i=0; i<n; i++) { scanf("%d",&num[i]); } int row=n,col=1; for (int i=n;i>=sqrt(n) ; i--) { int j=n/i; if (i*j==n&&i-j<row-col) { row=i; col=j; } } sort(num, num+n, compare); int result[row][col]; //初始化 for (int i=0; i<row; i++) { for (int j=0; j<col; j++) { result[i][j]=0; } } int count=0; int cur_r=-1,cur_c=-1;//初始化为-1 保证while循环的一致性 /* aaa deb dfb ccb */ while (count<row*col) { cur_r++; cur_c++; while (cur_c<col&&result[cur_r][cur_c]==0) { result[cur_r][cur_c++]=num[count++]; } cur_c--; cur_r++; while (cur_r<row&&result[cur_r][cur_c]==0) { result[cur_r++][cur_c]=num[count++]; } cur_r--; cur_c--; while (cur_c>=0&&result[cur_r][cur_c]==0) { result[cur_r][cur_c--]=num[count++]; } cur_c++; cur_r--; while (cur_r>=0&&result[cur_r][cur_c]==0) { result[cur_r--][cur_c]=num[count++]; } } for (int i=0; i<row; i++) { for (int j=0; j<col; j++) { if(j!=col-1) cout<<result[i][j]<<" "; else cout<<result[i][j]; } cout<<endl; } return 0;}
阅读全文
0 0
- PAT乙级 1050 螺旋矩阵(25)
- PAT乙级1050 螺旋矩阵
- 1050. 螺旋矩阵(25)-PAT乙级
- PAT乙级 1050. 螺旋矩阵(25)
- PAT乙级 1050. 螺旋矩阵(25)
- [PAT乙级]1050. 螺旋矩阵(25)
- PAT乙级 1050. 螺旋矩阵(25)
- PAT乙级1050. 螺旋矩阵(25)
- pat 乙级 1050. 螺旋矩阵(25)
- [PAT-乙级]1050.螺旋矩阵
- PAT乙级—1050. 螺旋矩阵(25)-native
- 1050. 螺旋矩阵(25)-PAT乙级真题
- pat乙级真题 1050. 螺旋矩阵(25)
- 1050. 螺旋矩阵(25) PAT乙级真题
- PAT乙级练习题B1050. 螺旋矩阵
- PAT 1050螺旋矩阵
- PAT螺旋矩阵(25)
- 1050. 螺旋矩阵(25) PAT乙级&&1105. Spiral Matrix (25)PAT甲级
- 页面文件上传java代码实现
- PhotoView手势放大缩小移动
- 【Manacher】最长回文子串
- 简单有效设置Virtual Box 中的 ubuntu 到主机win10共享文件夹
- Springboot+jedis简单项目
- PAT乙级 1050 螺旋矩阵(25)
- 异常
- 15_链表中倒数第k个节点
- 【java学习笔记】 如果定义了带有参数的构造函数,则默认构造函数失效(需手动定义)
- 线程池 Callable实现多线程
- 在eclipse中添加Tomcat服务器
- 线程学习总结1
- TLPI UNIX linux系统编程手册源代码运行
- 小白练打字:金山打字通