洛谷 T131253 杨辉三角(递归)
题目描述
设计递归程序,计算并输出杨辉三角的前n行。
输入格式
第一行一个正整数n,意义见描述。
输出格式
输出n行,表示前n行的杨辉三角。
行内元素以一个空格隔开。
输入输出样例
输入 #1
4
输出 #1
1
1 1
1 2 1
1 3 3 1
说明/提示
对于98%的数据,1≤n≤25。 对于100%的数据,1≤n≤1500,且由于元素过大,你需要将每个元素对998244353取模后输出。
参考解答:
#include<iostream>
using namespace std;
//杨辉三角
int num[1501][1501];//设置二维数组来“记忆(保存)”数据,避免一些重复的递归而造成的时间消耗
int Num(int i, int j) {//i表示行数,j表示该行第j个数,fun(i,j)表示第i行第j个数
if (j == 1 || j == i)//若是第一个位置 或 行数与位置数相同(即该行最后一个数) 则输出1
return 1;
else
return num[i][j]?num[i][j]:(num[i][j]=(Num(i - 1, j - 1) + Num(i - 1, j)) % 998244353);
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
cout << Num(i, j) << " ";
}
cout << endl;
}
return 0;
}
注:题目来源于洛谷平台,转载请注明文章出处https://blog.csdn.net/weixin_45912291/article/details/108369442
欢迎关注微信公众号:自学编程ing