POJ 1163&& 3176 The Triangle(DP)

Posted yxysuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 1163&& 3176 The Triangle(DP)相关的知识,希望对你有一定的参考价值。

The Triangle
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 41169   Accepted: 24882

Description

7
3   8
8   1   0
2   7   4   4
4   5   2   6   5

(Figure 1)
Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right. 

Input

Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.

Output

Your program is to write to standard output. The highest sum is written as an integer.

Sample Input

5
7
3 8
8 1 0 
2 7 4 4
4 5 2 6 5

Sample Output

30

Source




    题意:求走过这个三角形时的最大数值。起点为第一行的唯一的那一个数,终点是第n行的某一个数。当中要走dp[i][j]的话。他的上一步仅仅能是dp[i-1][j-1]或者dp[i-1][j];



#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define inf 9999
#define INF -9999

using namespace std;

int n;
int dp[361][361];

int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=i;j++)
            {
                scanf("%d",&dp[i][j]);
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=i;j++)
            {
                dp[i][j] += max(dp[i-1][j-1],dp[i-1][j]);
            }
        }
        int maxx = 0;
        for(int i=1;i<=n;i++)
        {
            if(maxx<dp[n][i])
            {
                maxx = dp[n][i];
            }
        }
        printf("%d\n",maxx);
    }
    return 0;
}


以上是关于POJ 1163&amp;&amp; 3176 The Triangle(DP)的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1679:The Unique MST(次小生成树&amp;&amp;Kruskal)

数学#扩展欧几里德 POJ 1061&2115&2891

POJ 1845-Sumdiv 数论 +快速幂&&筛素&&分解质因数&&求因数之和的模板

HDU1159 && POJ1458:Common Subsequence(LCS)

线段树区间更新&&求和poj3486

poj1664 放苹果(DPorDFS)&&系列突破(整数划分)