在一行上输入一个整数
代表矩阵的大小。
输出一个
行
列的上三角蛇形矩阵。
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