-
题目描述:
-
输入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
题目中提到了递归函数,但我并没想到合适的递归策略,故直接利用规律存放到数组中。
#include<stdio.h>
int ans[10000];
void f(int n) {
if (n == 2)
printf("1 1\n");
if (n > 2) {
f(n - 1);
}
}
int main() {
int n;
while (scanf("%d", &n) != EOF) {
ans[0] = ans[1] = 1;
printf("1 1\n");
int pos = 2;
int pre = 0;
for (int i = 3; i <= n; i++) {
ans[pos++] = 1;
printf("1 ");
for (int j = 0; j < i - 2; j++) {
ans[pos] = ans[pre + j] + ans[pre + j + 1];
printf("%d ", ans[pos]);
pos++;
}
ans[pos++] = 1;
pre = pre + i - 1;
printf("1\n");
}
}
}
题目链接:
http://ac.jobdu.com/problem.php?pid=1073