HDU 2084 數塔(基礎dp)

這題是一個基礎動態規劃,入門題目,思路很簡單,就是從下往上找一條最優路徑即可,轉移公式也很簡單,就是挑最大的情況進行存儲。

這裏博主使用了最基礎的二維數組來處理這題,其實這題還可以用一維滾動數組來優化空間,但是鑑於二維數組比較好理解,所以這裏我就使用了二維數組處理。

#include<stdio.h>

int a[110][110];

int max(int a, int b)
{
    if (a > b)
        return a;
    return b;
}


int main()
{
    int n, m;
    scanf("%d", &n);
    while (n)
    {
        scanf("%d", &m);
        int i, j;
        for (i = 0;i < m;i++)
        {
            for (j = 0;j <= i;j++)
            {
                    scanf("%d", &a[i][j]);
            }
        }
        for (i = m - 1;i >= 0;i--)
        {
            for (j = 0;j <= i;j++)
            {
                a[i][j] += max(a[i + 1][j], a[i + 1][j + 1]);
            }
        }
        printf("%d\n", a[0][0]);
        n--;
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章