题目的主要信息:

  • 输入一个正整数n,打印对应的乘法表,n为1 ~ 9中的一个数
  • 要求:数字和符号之间空格隔开,式子和式子之间使用4个空格隔开
  • 乘法表形如: alt

具体做法:

仔细观察乘法表,我们发现一共有n行,第i行的列数不会超过i列,而乘法公式前一个乘数是对应其列,后一个乘数对应其行,因此我们可以考虑用遍历如下的矩阵的方式:

alt

遍历1 ~ n行,用n来约束行数,然后对于每一行,遍历1 ~ i列,用每行的行号i来约束列,对于每次遍历,按照上述要求输出即可。每次结束一行,需要输入换行符。

#include <iostream>
using namespace std;

int main() {
	int n;
	cin >> n;
    for(int i = 1; i <= n; i++){ //行数
        for(int j = 1; j <= i; j++){ //列数
            cout << j << " * " << i << " = " << i * j << "    ";
        }
        cout << endl;
    }
	return 0;
}

复杂度分析:

  • 时间复杂度:O(n2)O(n^2)O(n2),两层循环遍历
  • 空间复杂度:O(1)O(1)O(1),无额外空间