然后对于这个很多很多层的矩阵,我们可以对其进行抽丝剥茧(就像洋葱一层一层剥开矩阵的心),每剥开一层,n-2,所要求的点相对于新矩阵的行列坐标分别-1,同时值+4*n-4; 于是我们用很短的代码就可以AC啦: CODE: #include<bits/stdc++.h>usingnamespacestd;intn,i,j;intdg(intn,intx,inty){if(x==1)retur...
intc=min(min(x-1,n-x),min(y-1,n-y));//确定要剥开的层数while(c--) { ans+=n*n-(n-2)*(n-2);//记录剥掉的数字总数n-=2;//原矩阵边长减2--x;--y;//目标位置也随之变化} 另外我们也不必真正的将数字填上,用tot记录好填到哪个数了,到时候输出tot与前面算出ans的和即可。 而且由于我...
首先,构建一个5x5的矩阵作为示例,以便理解。经过观察,可以发现一个规律:螺旋矩阵的填充方式是从内层到外层,按照顺时针方向依次填充数字。例如,以5x5矩阵为例,填充过程如下:1. 从左上角开始填充,先填充第一行,得到1, 2, 3, 4, 5。2. 然后填充第一列,除去第一行已填充的数字,得到6, ...
最暴力的解法就是从左上角开始遍历,一开始往右走,到头了右转往下走,到头了右转往左走,到头了右转往上走,……,一次循环。 此算法的时间复杂度为 \(O(n^2) = O(9 \times 10^8)\),在洛谷是可以过的。 但是我们其实可以把矩阵看成一个个圈,可以发现:最外面的圈一共有 \(4 \times (n-1)\) 个...
一道矩阵的题:(因为电脑出了点问题,无法用Excel,先复制洛谷的图片) 先画一个5×5的矩阵: 于是我们可以发现: 第11 行第 j 列对应的数就是 j 。 第n 列第 i 行对应的为 n+x-1。 第n 行第 j 列对应的数为 3×n-j-1。 再度填回第 11 列,第 i 行我们发现得到的对应数为 4×n-i-2 。
PTA 7-8 螺旋方阵 & 洛谷P2239 [NOIP2014 普及组] 螺旋矩阵 题解 题目: 所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。 输入格式:输入在一行中给出一个正整数N(<10)。 输出格式:输出N×N的螺旋方阵...
当i==1时,对应的值就是j所对应的值; 当i==n时,所对应的值就是3*n-2-j+1; 当j==1时,所对应的值是4*n-2-i; 当j==n时,对应的值是n+x-1。 然后对于这个很多很多层的矩阵,我们可以对其进行剥层,每剥开一层,n-2,所要求的点相对于新矩阵的行列坐标分别-1,同时值+4*n-4; ...
洛谷P2239 螺旋矩阵 题解 模拟 题目链接:https://www.luogu.com.cn/problem/P2239 最暴力的解法就是从左上角开始遍历,一开始往右走,到头了右转往下走,到头了右转往左走,到头了右转往上走,……,一次循环。 此算法的时间复杂度为O(n2)=O(9×108)O(n2)=O(9×108),在洛谷是可以过的。
洛谷P2239 螺旋矩阵 传送门 分析:将整个矩阵看成 “回” 形状的分层结构,然后进行去层处理,使得要求得\((i,j)\)处于最外层,然后再分情况讨论。最外面的一层共有数: $ 4 * n - 4 $ . 第二层共有数: 4n-4 -8 假设$ (i,j) $ 外共有 $ x $ 层,则外层所有的数为: $ ans=4nx-4x*x $...
洛谷P2239 螺旋矩阵(模拟 && 数学) 嗯... 题目链接:https://www.luogu.org/problem/P2239 这道题首先不能暴力建图,没有简单方法,只有进行进行找规律。 AC代码: AC代码