动态规划 杭电2084 数塔

来源:互联网 发布:c数组强制类型转换 编辑:程序博客网 时间:2024/06/05 04:10

既然是思想
动态规划的思想
要用自己的思想写出代码

动态规划的神奇就是
不需要去穷举
就像一次走完了所有的优越路径 然后在个别的优越路径中选出最好的
但是实际上每个路径也没有放过

#include <iostream>#include <string>#include <cstring>using namespace std;int main(){    int n;    cin>>n;    while(n--)    {        int t;        cin>>t;        int a[500][500];        int i,j;        for(i=1;i<=t;i++)        {            for(j=0;j<i;j++)            {                cin>>a[i][j];            }        }        int b[500][500];        int z=0;        for(i=1;i<=t;i++)        {            for(j=0;j<i+1;j++)            {                b[i][j]=0;            }        } b[1][0]=a[1][0];        for(i=1;i<t;i++)        {            if(i==t-1) z=0;            for(j=0;j<i+1;j++)            {                if((b[i][j]+a[i+1][j])>b[i+1][j])                {                    b[i+1][j]=b[i][j]+a[i+1][j];                }                if((b[i][j]+a[i+1][j+1])>b[i+1][j+1])                {                    b[i+1][j+1]=b[i][j]+a[i+1][j+1];                }                if(i==t-1&&z<b[i+1][j]) z=b[i+1][j];            }        }        if(t==1) z=a[1][0];        cout<<z<<endl;    }    return 0;}
1 0