首页 > 试题广场 >

蛇形矩阵

[编程题]蛇形矩阵
  • 热度指数:184604 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}你需要输出一个 nn 列的上三角形蛇形矩阵。
\hspace{15pt}具体的构造方法为,从 1 开始填充自然数,记第 i 行第 1 列的元素为 a_{i,1}=k ,将其右上角的元素 a_{i-1,2},a_{i-2,3},\cdots,a_{1,i} 依次赋值为 k+1, k+2, \cdots, k+i-1 ,随后,将 a_{i,2} 赋值为 k+i ,并重复上述过程,直到填满上三角范围 \frac{n(n+1)}{2} 个格子。

输入描述:
\hspace{15pt}在一行上输入一个整数 n \left(1 \leqq n \leqq 100\right) 代表矩阵的大小。


输出描述:
\hspace{15pt}输出一个 nn 列的上三角蛇形矩阵。
示例1

输入

4

输出

1 3 6 10
2 5 9
4 8
7

说明

\hspace{15pt}第一步,k=1 ,将 a_{1,1}=1
\hspace{15pt}第二步,k=2 ,将 a_{2,1}=2a_{1,2}=3
\hspace{15pt}第三步,k=4 ,将 a_{3,1}=4a_{2,2}=5a_{1,3}=6
\hspace{15pt}第四步,k=7 ,将 a_{4,1}=7a_{3,2}=8a_{2,3}=9a_{1,4}=10
\begin{bmatrix}<br /> \color{orange}{1} &  &  &  \\<br />  &  &  &  \\<br />  &  &  &  \\<br />  &  &  &  <br />\end{bmatrix}<br />\to<br />\begin{bmatrix}<br /> 1 & \color{orange}{3}  &  &  \\<br /> \color{orange}{2} &  &  &  \\<br />  &  &  &  \\<br />  &  &  &  <br />\end{bmatrix}<br />\to<br />\begin{bmatrix}<br /> 1 & 3 & \color{orange}{6} &  \\<br /> 2 & \color{orange}{5} &  &  \\<br /> \color{orange}{4} &  &  &  \\<br />  &  &  &  <br />\end{bmatrix}<br />\to<br />\begin{bmatrix}<br /> 1 & 3 & 6 & \color{orange}{10} \\<br /> 2 & 5 & \color{orange}{9} &  \\<br /> 4 & \color{orange}{8} &  &  \\<br /> \color{orange}{7} &  &  &  <br />\end{bmatrix}
头像 牛客338148058号
发表于 2022-03-20 20:10:31
观察第一行的规律符合累加求和公式;(n+1)n/2 第二行的规律则是第一行的 ((n+1)n/2) - 1 第三行的规律则是第一行的 ((n+1)n/2) - 2 第四行的规律则是第一行的 ((n+1)n/2) - 3 当i = 1 时,j = 1,2,3,4 进入循环; 展开全文
头像 枫火蓮天
发表于 2021-04-05 15:53:32
解题思路:找到数组下标的关系,按1、2、3……的顺序依次赋值。 import java.util.Scanner; public class Main{     public static voi 展开全文
头像 牛客666号.
发表于 2022-02-28 09:34:31
咱比较笨,找不到数字之间的规律,只能按照蛇形矩阵本来的规则来。 把蛇形矩阵旋转45度其实就是个金字塔,最上面是1,最右下方是最大的数,即10 原本: 1 3 6 10 2 5 9 4 8 7 旋转一下: 1 2 3 4 5 6 7 8 9 10 list1就是旋转后的矩阵 然后可以发现旋转后的矩阵里 展开全文
头像 读书不觉已春深
发表于 2020-08-17 10:51:27
1 3 6 102 5 94 87第一行[1 3 6 10]第二行是 去掉第一行的第一列,然后将后面的[3 6 10]分别减1得到的。 while True: try: N=int(input()) res=[] for i in range( 展开全文
头像 Williamyu
发表于 2020-02-12 16:38:35
其实可以找规律,C++4行就够 第一行最右上角的元素= . 相应的,第一行其他元素= . 第二行的元素为上一行元素去掉第一个,再减去1即可 类似,下一行等于上一行元素去掉第一个,再减去1即可 直到最后 #include <iostream> using namespace st 展开全文
头像 kimi宏
发表于 2020-11-17 18:09:01
从上面可以看出,蛇形矩阵其实就是多个等差数列,在列方向是+1;+2;+3*****;在行的方向是+2;+3,行的第一个差值是i+1;例如第一行是+2开始;第二行是+3开始,其实也是等差数列,行的每行循环次数比上行都减1public class Main{ public static void mai 展开全文
头像 摸鱼学大师
发表于 2021-10-20 23:06:59
题目的主要信息: 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形 形如: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 方法一:顺序填表 具体做法: 我们 展开全文
头像 涛哥比较无聊
发表于 2021-10-19 00:36:07
找到值与行列的关系,即 value=(i+j-2)*(i+j-1)/2+j,i,j是所属行与列。然后判定换行的时机,即j=N-i+1时,所属行已排满,换行 while True:     try:     &n 展开全文
头像 涅英杰
发表于 2022-07-01 16:22:00
我在题解中看到的解题方式,所以想详细将每一个算式的意义和解题思路写详细,然后分享给和我一样基础很差的同学,节约时间 # 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 # 例如,当输入5时,应该输出的三角形为: # 1 3 6  展开全文
头像 要进大厂大厂的橘子
发表于 2021-10-22 16:30:58
/** *蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如,当输入5时,应该输出的三角形为: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 */ import java.util.*; public class Main{ publi 展开全文