一个n 行n 列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第 1 行第1 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 1,2,3,…,n2,便构成了一个螺旋矩阵。 下图是一个 n=4 时的螺旋矩阵。 (12341213145111615...
然后对于这个很多很多层的矩阵,我们可以对其进行抽丝剥茧(就像洋葱一层一层剥开矩阵的心),每剥开一层,n-2,所要求的点相对于新矩阵的行列坐标分别-1,同时值+4*n-4; 于是我们用很短的代码就可以AC啦: CODE: #include<bits/stdc++.h>usingnamespacestd;intn,i,j;intdg(intn,intx,inty){if(x==1)retur...
首先,构建一个5x5的矩阵作为示例,以便理解。经过观察,可以发现一个规律:螺旋矩阵的填充方式是从内层到外层,按照顺时针方向依次填充数字。例如,以5x5矩阵为例,填充过程如下:1. 从左上角开始填充,先填充第一行,得到1, 2, 3, 4, 5。2. 然后填充第一列,除去第一行已填充的数字,得到6, ...
题目链接:https://www.luogu.com.cn/problem/P2239 最暴力的解法就是从左上角开始遍历,一开始往右走,到头了右转往下走,到头了右转往左走,到头了右转往上走,……,一次循环。 此算法的时间复杂度为 \(O(n^2) = O(9 \times 10^8)\),在洛谷是可以过的。 但是我们其实可以把矩阵看成...
一道矩阵的题:(因为电脑出了点问题,无法用Excel,先复制洛谷的图片) 先画一个5×5的矩阵: 于是我们可以发现: 第11 行第 j 列对应的数就是 j 。 第n 列第 i 行对应的为 n+x-1。 第n 行第 j 列对应的数为 3×n-j-1。 再度填回第 11 列,第 i 行我们发现得到的对应数为 4×n-i-2 。
洛谷2239 螺旋矩阵 翻了翻题解,发现我的这个方法好像并没有被写过,也许是这个方法太菜了,但是还是可以AC的。 首先呢:1 ≤ n ≤ 30,000...暴力就别想了,最多50分 于是就开始在暴力的基础上找方法,无意发现,如果我们开始先将矩阵一层一层的剥开,直到目标位置在新矩阵的最外层是停止。此时最坏情况,目标点...
然后发现 当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代码