pat-basic-1050

2024-01-13 20:08
文章标签 pat basic 1050

本文主要是介绍pat-basic-1050,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1050. 螺旋矩阵(25)

时间限制
150 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

本题要求将给定的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
在第七组测试样例中会给非常多的数据,所以要预先开好一个大数组
#include<cstdio>
#include<algorithm>
#include<math.h>
bool cmp(int a,int b)
{return a>b;
}
using namespace std;
int bn[10001][10001];
int an[10010];
int main()
{int N,i,n,m,j,k,cnt;k=0,cnt=0,i=0,j=0;scanf("%d",&N);for(i=0;i<N;i++){scanf("%d",&an[i]);}sort(an,an+N,cmp);n=sqrt(N);while(N%n!=0){n--;}m=N/n;while(1){for(i=k,j=k;i<n-k;i++){bn[j][i]=an[cnt];cnt++;if(cnt==N)goto out;}for(j=k+1,i=n-k-1;j<m-k;j++){bn[j][i]=an[cnt++];if(cnt==N)goto out;}for(i=n-k-2,j=m-k-1;i>k;i--){bn[j][i]=an[cnt++];if(cnt==N)goto out;}	for(j=m-k-1,i=k;j>k;j--){bn[j][i]=an[cnt++];if(cnt==N)goto out;}k++;}
out:for(j=0;j<m;j++){for(i=0;i<n;i++){printf("%d",bn[j][i]);if(i!=n-1)putchar(' ');if(i==n-1&&j!=m-1)putchar('\n');}}return 0;
}

这篇关于pat-basic-1050的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/602633

相关文章

查看Excel 中的 Visual Basic 代码,要先设置excel选项

1. excel VB的简单介绍 百度安全验证 2.excel选项设置 excel表格中在选项->自定义功能区域,选择开发工具,visual baisc/查看代码,即可看到代码。 3.excel已经设置,可以直接查看

POJ 1050 To the Max(枚举+动规)

题目: http://poj.org/problem?id=1050 题解: 此题转化成一维后就相当于求最大连续子序列了,可以枚举所有的行组合,把枚举到的起始行到终止行的值按列相加存入一个一维数组。 代码: #include<cstdio>#include<cstring>int a[101][101];int value[101];int dp[101];int max(

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

PAT (Advanced Level) Practice——1011,1012

1011:  链接: 1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn) 题意及解题思路: 简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。 同时还需要记录每一次选择的是W,T还是L

Basic Calculator 总结

Basic Calculator 思路:stack中间存数,遇见+,-都当符号位,push num或者-num进去;最后相加;重要的是如何处理括号,那么这里一种方法是用递归调用;count左右括号,如果为0,那么就是一个反括号的位置了,那么 //(      ) //j......i; substring(j + 1, i); 这题的通用解法,可以扩展到二三题; class Solutio

力扣SQL仅数据库(610-1050)

610. 判断三角形 需求:对每三个线段报告它们是否可以形成一个三角形。 数据准备: Create table If Not Exists Triangle (x int, y int, z int)Truncate table Triangleinsert into Triangle (x, y, z) values ('13', '15', '30')insert into Tri

PAT (Advanced Level) Practice

1001:  题目大意: 计算 a+b 的结果,并以标准格式输出——即每三个数字一组,组之间用逗号分隔(如果数字少于四位,则不需要逗号分隔)  解析: 我们知道相加右正有负,对于样例来说 Sample Input: -1000000 9 Sample Output: -999,991 如果是从左往右,算上负号的话输出应该是-99,999,1 从右往左:-,999,991离正确

做克隆虚拟机的basic

新建一台虚拟机(之前写的有这一步) 虚拟机里操作 vi /etc/hostname    改称basic (可改可不改)  vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILU

【Http认证方式】——Basic认证

今天在访问请求:http://192.168.2.113:8080/geoserver/rest/workspaces时,浏览器弹出窗口需要输入用户名和密码 ,并且,如果不输入或者输入错误,浏览器返回 可以在火狐浏览器的网络监控这里看到请求的详细信息,

微积分复习笔记 Calculus Volume 1 - 1.2 Basic Classes of Functions

1.2 Basic Classes of Functions - Calculus Volume 1 | OpenStax