初探动态规划之数字三角形

来源:互联网 发布:最优化方法 编辑:程序博客网 时间:2024/06/04 23:32
#include <stdio.h>#include <algorithm>using namespace std;int end=5;int array[5][5];int dp[5][5];int main(){    for(int i=0;i<end;i++){        for(int j=0;j<=i;j++){            scanf("%d",&array[i][j]);        }    }    //while(i==4){        for(int j=0;j<end;j++){            dp[4][j]=array[4][j];        }    //}    for(int i=4;i>=0;i--){        for(int j=0;j<=i;j++){        dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+array[i][j];        printf("dp[%d][%d]=%d\n",i,j,dp[i][j]);        }    }printf("%d",dp[0][0]);    return 0;}

说实在的我心里仍然对动态规划十分迷惑,至此我唯一能体会到的就是本来可以用递归做到的,但是递归没有记忆需要反复计算,这里就可以找一个方法记住这些过程值,从而简化计算。
有待下一次补充。

1 0