poj 3176 Cow Bowling(最简单DP题)

来源:互联网 发布:网络监控工程公司 编辑:程序博客网 时间:2024/05/22 19:27

数字三角形,从头开始走,往下走,每次只能选择左或右,问走到最底最大的数是多少。


学长说这是最简单的DP题,可能连DP都算不上。


自己推出了状态转移方程,但是遍历的时候不知道从底开始往上遍历,最后输出dp[0][0]就ok了。


代码:

#include<stdio.h>#include<algorithm>using namespace std;int main(){    #ifdef LOCAL    freopen("in.txt","r",stdin);    #endif // LOCAL    int N;    int dp[351][351];    int a[351][351];    while(scanf("%d", &N)!=EOF)    {        for(int i = 0; i < N; i++)        {            for(int j = 0; j < N; j++)            {                scanf("%d", &a[i][j]);                dp[i][j] = a[i][j];                if(i == j)                    break;            }        }        for(int i = N - 1; i >= 0; i--)//debug        {            for(int j = 0; j < N; j++)            {                dp[i][j] = a[i][j] + max(dp[i + 1][j], dp[i + 1][j + 1]);                if(i == j)                    break;            }        }        printf("%d\n", dp[0][0]);    }    return 0;}


0 0
原创粉丝点击