SDAU 练习三 1006 最大节点之和问题

来源:互联网 发布:淘宝客推广要求 编辑:程序博客网 时间:2024/06/15 23:12

简单题意:

     有一个数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?

思路:

    运用动态规划的思想,对于状态用数组记录下来,公式从最底层开始,用状态公式向上计算即可。

代码如下:

 

#include<iostream>#include<set>using namespace std;int Max(int a,int b){if(a>=b)return a;return b;}int main(){int m,n,i,j;int map[1000][1000]={0};cin>>n;while(n--){cin>>m;for(i=0;i<m;i++)for(j=0;j<=i;j++)cin>>map[i][j];        for(i=m;i>=0;i--)for(j=0;j<m;j++)map[i][j]=Max(map[i+1][j+1],map[i+1][j])+map[i][j];cout<<map[0][0]<<endl;}return 0;}


感想:

      对动态规划的认识刚起步,能自己AC这道题,感到很高兴。

ACID:00758479



0 0
原创粉丝点击