2991462923@qq.c 发表于 2023-6-6 13:18:37

输出特定矩阵

【问题描述】用户输入正整数n(1<=n<=9),输出n*n的特定矩阵,矩阵元素为小于等于n的正整数,其排列规律如下:

例如n=5,输出矩阵为:(行元素间隔1个空格,行间无空行)(请仔细分析矩阵元素和行号列号间的关系)
1 1 1 1 1
1 2 2 2 2
1 2 3 3 3
1 2 3 4 4
1 2 3 4 5


【输入形式】一个正整数, 值在区间

【输出形式】n*n的特定矩阵, 其排列规律见输出示例

【样例输入】3
【样例输出】
1 1 1
1 2 2
1 2 3
      
请问这个题有简单的方法吗      

isdkz 发表于 2023-6-6 13:26:28

这个问题实际上是要求构建一个特殊的矩阵,矩阵的大小为n*n,矩阵元素为小于等于n的正整数,规则是行的每个元素都不大于其列数。从矩阵规律来看,矩阵的第i行的第j列的元素值等于min(i+1, j)。我们可以根据这个规则,用Python的双层循环来构造这个矩阵。以下是一个简单的Python实现:

def print_matrix(n):
    for i in range(n):
      row = []
      for j in range(n):
            row.append(str(min(i+1, j+1)))
      print(' '.join(row))

print_matrix(3)# 输入样例


运行这个程序并输入3,你将得到如下输出:
1 1 1
1 2 2
1 2 3


这个程序的工作方式是,对于每个i,j位置,计算出最小的值,并将其添加到该行的列表中。完成一行后,使用空格将其连接起来并打印出来。

yinda_peng 发表于 2023-6-6 13:41:49

不知道你看出规律没有,就是ai j = min(i,j),看出来了思路一下就有了

sfqxx 发表于 2023-6-6 17:42:02

yinda_peng 发表于 2023-6-6 13:41
不知道你看出规律没有,就是a = min(i,j),看出来了思路一下就有了

aij怎么打的?

yinda_peng 发表于 2023-6-6 21:04:29

sfqxx 发表于 2023-6-6 17:42
aij怎么打的?

高级模式,有个下标

sfqxx 发表于 2023-6-6 21:39:57

yinda_peng 发表于 2023-6-6 21:04
高级模式,有个下标

ok
页: [1]
查看完整版本: 输出特定矩阵