在一行上输入一个整数
代表矩阵的大小。
输出一个
行
列的上三角蛇形矩阵。
4
1 3 6 10 2 5 9 4 8 7
第一步,
,将
;
第二步,
,将
、
;
第三步,
,将
、
、
;
第四步,
,将
、
、
、
。
n = int(input()) value_x = 1 value_y = 1 list_gap_x = list(range(2, n+1)) list_gap_y = list(range(n+1))
# 前面初始化的这段代码,放在不同位置,有不同的结果 # 不知道为啥,求解答 # 1. 放在 while True 下面,会有如下报错 # 程序异常退出, 请检查代码"是否有数组越界等异常"或者"是否有语法错误" # Traceback (most recent call last): # File "/tmp/a.py3", line 10, in # n = int(input()) # EOFError: EOF when reading a line # 2. 放在 try 下面 会在某一行中断循环,只跑了一部分的蛇形矩阵 # 3. 放在目前最上面的位置,才可以跑通 # 4. 当前代码,去掉 while True, 去掉 try except, # 在自测 n = 4 的时候,需要取消注释 # print(value_x),才能跑通 n = 4 # 在提交的时候,会 出现 2. 的问题,只跑出一部分蛇形矩阵 n = int(input()) value_x = 1 value_y = 1 list_gap_x = list(range(2, n+1)) list_gap_y = list(range(n+1)) while True: try: for gap_y in list_gap_y: for gap_x in list_gap_x: print(value_x, end=" ") value_x += gap_x print(value_x) list_gap_x.pop(0) list_gap_y.pop(0) value_x = value_y + list_gap_y[0] value_y = value_x # print(value_x) except: break
n = int(input()) #第一行第一列的值 col = 1 #此循环是有多少行 for i in range(n): #每一轮循环开始,设置第一个数字 col += i row = col #此循环是当前行有多少列 for j in range(n-i): print(row,end=' ') #更新为下一个应该打印出来的数字,2+i是每一行控制起始间隔步长的 #第一行第一个数字加2(2+0)的到第二个数字 #第二行第一个数字加3(2+1)得到第二个数字 #... row += (2+i)+j #每一行打印完了输出回车换行,开始下一轮循环打印下一行 print()
def start_num(row): res = 1 for i in range(1,row + 1): res = res + (i - 1) return res def print_row(row,count): start = start_num(row) for i in range(1,count+1): print(start,end=" ") start = start + i + row while True: try: row = int(input()) for i in range(1,row + 1): print_row(i, row + 1 - i) print() except: break
while True: try: n = int(input()) triList = [] count = 1 for i in range(n,0,-1): empty = ["" for i in range(i)] triList.append(empty) for i in range(n+1): for y in range(i): x = i - y - 1 triList[x][y] = str(count) count += 1 res = "" for i in range(n): print(' '.join(triList[i])) except: break
while True: try: n=int(input()) lst=[] for i in range(n): lst.append([ii for ii in range(int(i*(i+1)/2+1),int((i+1)*(i+2)/2+1))]) m=0 for m in range(n): for i in range(m,n): print(lst[i][-m-1],end=' ') print('') except: break
while True: try: num = int(input()) # start变量记录每行的第一个数值,初始化为1 start = 1 for i in range(0, num): # [1,2,4,7,11] start += i # 将求出来的每一行中的第一个值赋值给p,由p来继续这行其他数的运算 p = start print(p, end=' ') # 打印每行的第一个数值 # 每一行的第一个数值已经打印完成,接着继续这行中其他数值的计算 for j in range(i+1, num): p += (j+1) print(p, end=' ') print() except: break
# 2020年11月17日11:02:12 # 设列编号m,n均从0开始 # 蛇形矩阵第0列构成递推数列,通项公式为Am,0 = Am-1,0 + m # 蛇形矩阵每一行构成一个递推数列, # 第0行为An = An-1 + n + 1 # 第1行为An = An-1 + n + 2 # 第m行为An = An-1 + n + m + 1 # 综上,蛇形矩阵的递推公式为: # Am,n = Am,n-1 + n + m + 1 (n>0) # Am,0 = Am-1,0 + m (n=0,m>0) # A0,0 = 1 (n=0,m=0) #根据行列号查询蛇形矩阵值 def snake(m, n): if n==0 and m==0: num = 1 elif n==0: num = snake(m-1, 0) + m else: num = snake(m,n-1) + n + m + 1 return num while True: try: N = int(input()) # 遍历N行 for i in range(N): data = "" # 在第i行,遍历N-i列 for j in range(N-i): data += str(snake(i, j)) if j != N-i-1: data += " " print(data) except: break
while True: try: n = int(input()) # 创建二维数组并初始化为0 arr = [[0 for i in range(j)] for j in range(n, 0, -1)] i = j = 0 arr[i][j] = 1 while True: # 撞墙新起一行 if i-1 < 0: arr[j+1][0] = arr[i][j] + 1 i = j + 1 j = 0 # 没有撞墙向右上角走 else: arr[i-1][j+1] = arr[i][j] + 1 i = i - 1 j = j + 1 if j == n - 1: break for i in arr: print(' '.join(map(str, i))) except: break
while 1: try: num = int(input()) snum = (num**2+num)//2 x = 0 y = 0 array = [[0 for i in range(num)] for j in range(num)] for i in range(1,snum+1): array[x][y] = str(i) if x == 0: x = y+1 y = 0 else: x -= 1 y += 1 for i in range(num): b = list(array[i][:num-i]) print(" ".join(b)) except: break
def snakeMat(N): # N 蛇形矩阵行数 mat = [[0 for j in range(N)] for i in range(N)] x = 1 for index in range(N): i = index while i >= 0: j = index - i mat[i][j] = x i -= 1 x += 1 return mat while True: try: N = int(input()) mat = snakeMat(N) for i in mat: print(' '.join(str(x) for x in i if x!=0)) except: break