题目解析
* 输入输出:输入两个正整数 n,mn, mn,m(分别代表矩阵的行数和列数);输出 nnn 行,每行 mmm 个整数,第 iii 行第 jjj 列的值为 i×ji \times ji×j。
* 数据范围:1≤n,m≤501 \leq n, m \leq 501≤n,m≤50,规模极小,直接模拟构造即可。
* 复杂度要求:时间复杂度 O(n⋅m)O(n \cdot m)O(n⋅m),空间复杂度 O(1)O(1)O(1)(不计输出缓冲区)。
* 算法知识点:模拟、矩阵构造、等差数列性质
思路解析
1. 数学规律验证:题目要求每行每列均为等差数列。第 iii 行第 jjj 列填入 i×ji \times ji×j 时:
* 行方向:固定 iii,jjj 从 111 递增到 mmm,数值序列为 i,2i,3i,…,mii, 2i, 3i, \dots, mii,2i,3i,…,mi,是公差为 iii 的等差数列;
* 列方向:固定 jjj,iii 从 111 递增到 nnn,数值序列为 j,2j,3j,…,njj, 2j, 3j, \dots, njj,2j,3j,…,nj,是公差为 jjj 的等差数列。
因此 ai,j=i×ja_{i,j} = i \times jai,j =i×j 满足题意。
2. 矩阵生成:使用双重循环遍历行号 i∈[1,n]i \in [1, n]i∈[1,n] 和列号 j∈[1,m]j \in [1, m]j∈[1,m],直接计算并输出乘积 i×ji \times ji×j。
3. 格式控制:每个数字后跟空格分隔,每行结束后输出换行符。
完整代码