
1050. 螺旋矩阵(25) C++
发布日期:2021-05-08 02:32:56
浏览次数:26
分类:精选文章
本文共 1185 字,大约阅读时间需要 3 分钟。
本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所有可能值中的最小值。
输入格式:
输入在第1行中给出一个正整数N,第2行给出N个待填充的正整数。所有数字不超过104,相邻数字以空格分隔。
输出格式:
输出螺旋矩阵。每行n个数字,共m行。相邻数字以1个空格分隔,行末不得有多余空格。
输入样例:12
37 76 20 98 76 42 53 95 60 81 58 93输出样例:
98 95 93
42 37 81 53 20 76 58 60 76#includeusing namespace std;bool cmp(int a,int b){ return a>b;}int res[10010][10010];int main(){ int n,i; cin>>n; int col = sqrt(n), row; while(n % col){ col--; } row = n / col; int a[n]; for(i=0;i >a[i]; sort(a,a+n,cmp); int f=0,k=0,p=0,q=0; while(k res[p][i]) res[p][i]=a[k++]; } f++; } if(k>=n) break; if(f%4==1) { for(i=p;i res[i][col-p-1]) res[i][col-p-1]=a[k++]; } f++; } if(k>=n) break; if(f%4==2) { for(i=col-p-1;i>=0;i--) { if(a[k]>res[row-p-1][i]) res[row-p-1][i]=a[k++]; } f++; } if(k>=n) break; if(f%4==3) { for(i=row-p-1;i>=0;i--) { if(a[k]>res[i][p]) res[i][p]=a[k++]; } f++; } p++; if(k>=n) break; } for(i=0;i
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月08日 19时43分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ASP.NET CORE MVC 实现减号分隔(Kebab case)样式的 URL
2021-05-09
SQL优化 MySQL版 -分析explain SQL执行计划与笛卡尔积
2021-05-09
bcolz的新操作
2021-05-09
Linux的s、t、i、a权限(转)
2021-05-09
zmq的send
2021-05-09
C++中的delete加深认识
2021-05-09
windows消息机制(转)
2021-05-09
STL笔试面试题总结(干货)(转)
2021-05-09
XML 和 HTML 之间的差异
2021-05-09
阿里钉钉面试题
2021-05-09
华为社招笔试
2021-05-09
C++中找资源或者函数的方法
2021-05-09
一些留给自己的思考题(只求回过头来能够有所获)
2021-05-09
SQL函数返回表的写法
2021-05-09
delete对象时会自动调用类的析构函数
2021-05-09
C++ 子类对象直接赋值给父类对象可行,反过来不行
2021-05-09
linux下同一个动态库名为何辣么多的.so文件
2021-05-09
SQL联表的方式(逗号, Left Join, Right Join)
2021-05-09
牛客网输入输出举例
2021-05-09
字符串初始化时的注意点
2021-05-09