九度oj 题目1073:杨辉三角形
题目1073:杨辉三角形
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:4634
解决:1966
- 题目描述:
-
输入n值,使用递归函数,求杨辉三角形中各个位置上的值。
- 输入:
-
一个大于等于2的整型数n
- 输出:
-
题目可能有多组不同的测试数据,对于每组输入数据,
按题目的要求输出相应输入n的杨辉三角形。
- 样例输入:
-
6
- 样例输出:
-
1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 int a[100][100]; 5 int c(int i, int j){//勉强用递归(记忆化) 6 if(a[i][j] > 0) 7 return a[i][j]; 8 if(j == 1 || i == j){ 9 a[i][j] = 1; 10 return a[i][j]; 11 } 12 a[i][j] = c(i - 1, j - 1) + c(i - 1, j); 13 return a[i][j]; 14 } 15 16 int main(){ 17 int n, i, j; 18 while(cin >> n){ 19 memset(a, 0, sizeof(a)); 20 for(i = 1; i <= n; i++){ 21 for(j = 1; j <= i; j++){ 22 c(i, j); 23 } 24 } 25 for(i = 2; i <= n; i++){ 26 cout << a[i][1]; 27 for(j = 2; j <= i; j++){ 28 cout << " " << a[i][j]; 29 } 30 cout << endl; 31 } 32 } 33 return 0; 34 }
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 int a[100][100]; 5 6 int main(){ 7 int n, i, j; 8 while(cin >> n){ 9 for(i = 1; i <= n; i++){ 10 for(j = 1; j <= i; j++){ 11 if(j == 1 || i == j) 12 a[i][j] = 1; 13 else 14 a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; 15 } 16 } 17 for(i = 2; i <= n; i++){ 18 cout << a[i][1]; 19 for(j = 2; j <= i; j++){ 20 cout << " " << a[i][j]; 21 } 22 cout << endl; 23 } 24 } 25 return 0; 26 }
越努力,越幸运