杨辉三角

来源:互联网 发布:飞机晚点查询软件 编辑:程序博客网 时间:2024/06/05 07:50

百科:链接

前10列:
这里写图片描述


递归法:

#include <stdio.h>#include <stdlib.h>//计算杨辉三角数 int Fun(int i, int j){    if (0 == j || i == j)        return 1;     return Fun(i - 1, j - 1) + Fun(i - 1, j);}int main(){    int n;    while(scanf("%d", &n)){        system("cls");        printf("%d行杨辉三角:\n", n);        for (int i = 0; i < n; i++)        {            for (int j = n - i - 1; j > 0; j--)                printf("   ");            for (int j = 0; j <= i; j++)                    printf("%-3d   ", Fun(i, j));            printf("\n");        }        printf("\n");    }    return 0;}

动态规划法:

#include <stdio.h>#include <stdlib.h>#define MAX_N 1000//计算杨辉三角数 (动态规划记录,速度快但牺牲空间为代价) int Fun(int i, int j){    static int dp[MAX_N][MAX_N] = {0};    if(dp[i][j])        return dp[i][j];    if (0 == j || i == j)        return dp[i][j] = 1;     return dp[i][j] = Fun(i - 1, j - 1) + Fun(i - 1, j);}int main(){    int n;    while(scanf("%d", &n)){        system("cls");        printf("%d行杨辉三角:\n", n);        for (int i = 0; i < n; i++)        {            for (int j = n - i - 1; j > 0; j--)                printf("   ");            for (int j = 0; j <= i; j++)                    printf("%-3d   ", Fun(i, j));            printf("\n");        }        printf("\n");    }    return 0;}

排列组合规律法:

第i,j列个数为C(i, j)(i>=j>=0)

#include <stdio.h>#include <stdlib.h>//计算杨辉三角数 int Fun(int n, int m){    int res = 1;    for(int i = 1; i <= m; i ++){        res = res * (n - i + 1) / i;    }    return res;}int main(){    int n;    while(scanf("%d", &n)){        system("cls");        printf("%d行杨辉三角:\n", n);        for (int i = 0; i < n; i++)        {            for (int j = n - i - 1; j > 0; j--)                printf("   ");            for (int j = 0; j <= i; j++)                    printf("%-3d   ", Fun(i, j));            printf("\n");        }        printf("\n");    }    return 0;}
1 0
原创粉丝点击