九度OJ 1073:杨辉三角形 (递归)
- 题目描述:
- 
输入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>
#include <string.h>
/*
int yanghui(int x, int y)
{
    if (y == 1)
        return 1;
    if (x == y)
        return 1;
    return yanghui(x-1, y-1) + yanghui(x-1, y);
}
*/
int main(void)
{
    int i, j, n;
    int a[1000][1000];
 
    while (scanf("%d", &n) != EOF)
    {
        for (i=2; i<=n; i++)
        {
            for (j=1; j<=i; j++)
            {
                if (j == 1 || i == j)
                    a[i][j] = 1;
                else
                    a[i][j] = a[i-1][j-1] + a[i-1][j];
                printf("%d", a[i][j]);
                if (i != j)
                    printf(" ");
            }
            printf("\n");
        }
    }
 
    return 0;
}
/**************************************************************
    Problem: 1073
    User: liangrx06
    Language: C
    Result: Accepted
    Time:10 ms
    Memory:4744 kb
****************************************************************/
    编程算法爱好者。
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号