九度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 }

 

 
posted @ 2017-03-01 11:07  琴影  阅读(474)  评论(0编辑  收藏  举报