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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:PAT甲级-1098 Insertion or Heap Sort (25 分)
下一篇:PAT甲级-1107 Social Clusters (30 分)

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月27日 02时12分32秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章