洛谷 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; }