【递归+dp】杨辉三角

杨辉三角形

http://www.nowcoder.com/questionTerminal/ef7f264886a14fdf8a6ed3ac008a23c8

/* 杨辉三角:https://www.cnblogs.com/kevin-lee123/p/7096090.html */
/* 此类问题采用递归+dp,可以减少子问题重复计算的次数 */
#include <cstdio>
#include <iostream>
using namespace std;

int dp[1000][1000];

int YH(int m,int n){
    if(dp[m][n]!=0)    //dp思想:减少重复计算子问题
        return dp[m][n];
    else{
        if(n==0||m==n){
            dp[m][n]=1;
            return dp[m][n];
        }
        else{
            dp[m][n] = dp[m-1][n-1]+dp[m-1][n];
            return dp[m][n];
        }
    }
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            dp[i][j]=0;
        }
    }
    for(int i=1;i<n;i++){
        for(int j=0;j<=i;j++){
            if(j!=0)
                cout<<" ";
            cout<<YH(i,j);
        }
        cout<<"\n";
    }
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务