题目描述
已知矩形的行和列,请按如下的规律输出斜对角矩形。
例1:
输入:2 2
输出:[[1,3],[2,4]]
例2:
输入:1 2
输出:[[1,2]]
例3:
输入:4 3
输出:
[[1,3, 6], [2, 5, 9], [4, 8, 11], [7, 10, 12]]
解题思路
题目的意思是想让我们从左下角往右上角的方向放置数据,因此我们需要先找到这些数据的坐标,然后再将这些数据放进这些位置即可,第一个数和最后一个数分别放进第一个和最后一个格子里。
这些格子的坐标分别为(0,0),(1,0),(0,1),(2,0),(1,1)
……,通过观察我们发现:
每一条线上的坐标和是一样的,和为几则表示第几条线,因此,对于位置的确定,我们只需要既在线上又在格子里的位置找出来,然后再将数据填进这些位置就能解决问题。
代码实现
python3代码
st=input().split(' ')
row=int(st[0])
col=int(st[1])
def place(num,Row,Col):# 寻找在第num条线上,Row和Col范围内的位置
res=[]
for i in range(num+1):
if num-i<Row and i<Col:
res.append((num-i,i))
return res
def handle(row,col):# 填数
arr=[[0]*col for i in range(row)]
loc=[]
index=0
while(loc.__len__()<row*col):
loc+=place(index,row,col)
index+=1
index=1
for l in loc:
arr[l[0]][l[1]]=index
index+=1
return arr
print(handle(row,col))
运行结果
2 2
[[1, 3], [2, 4]]
1 2
[[1, 2]]
4 3
[[1, 3, 6], [2, 5, 9], [4, 8, 11], [7, 10, 12]]