PAT甲级-1105 Spiral Matrix (25 分)
发布日期:2022-02-10 08:11:00
浏览次数:15
分类:技术文章
本文共 1547 字,大约阅读时间需要 5 分钟。
题目:
分析:模拟,螺旋数组输出
#include#include #include #include #include using namespace std;int n,k,p;int cmp(int a,int b){ return a > b;}int a[100001];int ans[10001][10001];int main(){ cin>>n; for(int i = 1; i<= n; i++) cin>>a[i]; sort(a + 1, a + 1 + n, cmp); int rows,cols,t = 999999999; for(int i = 1; i <= n; i++) { if(n % i == 0 && abs(i - (n / i)) < t) { rows = i;cols = n / i; t = abs(i - (n / i)); } } if(rows < cols)swap(rows,cols); int f = 1; int r = 1, c = 1; int cnt = 1; int left = 1,right = cols,up = 1,down = rows; while(cnt <= n) { if(f == 1) { for(;c<=right;c++) ans[r][c] = a[cnt++]; f = 2; up++; r++; c--; } else if(f == 2) { for(;r<=down;r++) ans[r][c] = a[cnt++]; f = 3; right--; r--; c--; } else if(f == 3) { for(;c>=left;c--) ans[r][c] = a[cnt++]; f = 4; down--; r--; c++; } else if(f == 4) { for(;r>=up;r--) ans[r][c] = a[cnt++]; f = 1; left++; r++; c++; } } for(int i = 1; i <= rows; i++) { for(int j = 1;j<=cols;j++) { if(j == 1) cout<
转载地址:https://blog.csdn.net/qq_43567222/article/details/113834397 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月27日 02时12分32秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
蓝桥杯 ADV-144 算法提高 01背包 (java)(动态规划算法)
2019-04-25
蓝桥杯 ADV-143 扶老奶奶过街(java)
2019-04-25
2440里面有个看门狗 定时器(Watch Dog Timer)
2019-04-25
volatile关键字的作用:防止变量被编译器优化
2019-04-25
Makefile 假想目标:.PHONY
2019-04-25
bss、data和rodata区别与联系
2019-04-25
C代码中如何使用链接脚本.lds中定义的变量
2019-04-25
ARM指令和Thumb指令的区别
2019-04-25
作为一个新人,怎样学习嵌入式Linux?
2019-04-25
站在2018看单片机和嵌入式芯片方案选型和发展趋势
2019-04-25
Linux内核编程初探:块设备驱动程序——Ramdisk
2019-04-25
C语言 memcpy 用法
2019-04-25
浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别
2019-04-25
C++深度解析 内联函数分析 内联inline和宏#define(5)
2019-04-25
C++深度解析 函数重载分析(7)
2019-04-25
报表的 SQL 注入风险是什么意思?如何防范?
2019-04-25
JS-part3.3-复杂数据类型之 数组和排序方法
2019-04-25