按规律输出矩阵 — python实现

本文介绍了一种算法,用于根据给定的行和列数,按斜对角线规律输出矩形矩阵。通过计算斜对角线上元素的坐标,实现从左下角到右上角的数据填充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

已知矩形的行和列,请按如下的规律输出斜对角矩形。

例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]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值