zoukankan      html  css  js  c++  java
  • P1216 [IOI1994]数字三角形

    史上最水的 dp 题,没有之一(By rxz)

    确实很简单,就算是我这个 dp 萌新也一眼看出来了转移方程

    首先考虑状态,设 (f_{i,j}) 表示选择第 (i) 层第 (j) 个数时获得的最大值,那么可以发现,对于数字 (a_{i,j}) ,只有从 (a_{i-1,j})(a_{i-1,j-1}) 走来。

    如果可以理解上面那一点,转移方程就显而易见了:(f_{i,j}= ext{max}{f_{i-1,j}+a_{i,j} , f_{i-1,j-1}+a_{i,j}})

    所以最终代码如下:

    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    
    using namespace std;
    
    int n,a[1001][1001],f[1001][1001];
    
    int main()
    {
        cin>>n;
    
        for(int i=1;i<=n;i++)
            for(int j=1;j<=i;j++)
                cin>>a[i][j];
        //计算所有的f
        for(int i=1;i<=n;i++)
            for(int j=1;j<=i;j++)
                f[i][j]=max(f[i-1][j]+a[i][j],f[i-1][j-1]+a[i][j]);
        //在最后一行找出最大值
        int ans=-233333333;
        for(int i=1;i<=n;i++)
            ans=max(ans,f[n][i]);
        
        cout<<ans;
    
        return 0;
    }
    
  • 相关阅读:
    mvc中压缩html
    简单瀑布流
    MVC4 WebAPI
    css实现隔行换色
    网站变黑白
    reset.css
    选择文本改变浏览器默认的背景色和前景色
    DataBinder.Eval用法范例
    精妙SQL語句
    asp.net面试题收集
  • 原文地址:https://www.cnblogs.com/BlueInRed/p/12309366.html
Copyright © 2011-2022 走看看