螺旋三角矩阵

"""输出如下
10
1       2       3       4       5       6       7       8       9       10

27      28      29      30      31      32      33      34      11      0

26      45      46      47      48      49      35      12      0       0

25      44      54      55      50      36      13      0       0       0

24      43      53      51      37      14      0       0       0       0

23      42      52      38      15      0       0       0       0       0

22      41      39      16      0       0       0       0       0       0

21      40      17      0       0       0       0       0       0       0

20      18      0       0       0       0       0       0       0       0

19      0       0       0       0       0       0       0       0       0
"""
n = str()
while True:
	try:
		n = input()
		n = int(n)
		break
	except Exception:
		continue

matrix = []

for i in range(n):
	inner = []
	for j in range(n):
		inner.append(0)

	matrix.append(inner)

case = 1
i = 0
j = 0

j_max = n - 1
j_min = 0

i_max = n - 1
i_min = 0

count = 1

def print_matrix():
	for a in matrix:
		for b in a:
			print(b,end = '\t')
		print()

	print()

while True:
	if count > n * (n + 1) / 2:
		break
	if case == 1:
		matrix[i][j] = count
		if j >= j_max:
			i += 1
			j -= 1
			case = 2
			i_min += 1
			j_max -= 2
		else:
			j += 1
	elif case == 2:
		matrix[i][j] = count
		i += 1
		j -= 1
		if i > i_max or j < j_min:
			i -= 2
			j += 1
			case = 3
			i_max -= 2

	elif case == 3:
		matrix[i][j] = count

		if i <= i_min:
			j += 1
			case = 1
			j_min += 1
		else:
			i -= 1

	count += 1
	#print_matrix()

print_matrix()



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值