首页 > 试题广场 >

蛇形矩阵

[编程题]蛇形矩阵
  • 热度指数:170308 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

例如,当输入5时,应该输出的三角形为:

1 3 6 10 15

2 5 9 14

4 8 13

7 12

11



输入描述:

输入正整数N(N不大于100)



输出描述:

输出一个N行的蛇形矩阵。

示例1

输入

4

输出

1 3 6 10
2 5 9
4 8
7
头像 牛客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 展开全文
头像 要进大厂大厂的橘子
发表于 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 展开全文
头像 李子木啊
发表于 2020-05-04 11:35:46
第0行,j=1,每一位数字为:(j*j+j)/2 第1行,j=2,每一位数字为:(j*j+j)/2-1.即为,去掉上一行的第一个数,然后后面的数补上来,并且减1 import java.util.Scanner; /**  * @author lx 展开全文