165:The Triangle(动态规划)

来源:互联网 发布:幻想武器知乎 编辑:程序博客网 时间:2024/06/05 07:39

165:The Triangle

  • 查看
  • 提交
  • 统计
  • 提问
时间限制: 
1000ms
 
内存限制: 
65536kB
描述
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 calculatesthe highest sum of numbers passed on a route that starts at the topand ends somewhere on the base. Each step can go either diagonallydown to the left or diagonally down to theright. 
输入
Your program is to read from standard input. The first linecontains one integer N: the number of rows in the triangle. Thefollowing N lines describe the data of the triangle. The number ofrows in the triangle is > 1 but <=100. The numbers in the triangle, all integers, are between 0 and99.
输出
Your program is to write to standard output. The highest sum iswritten as an integer.
样例输入
3 8 
8 1 0 
2 7 4 4 
4 5 2 6 5
样例输出
30

源码(OpenJudge通过):
#include"stdio.h"

int max(int a,int b)
{
    if(a>b)
                return a;
     else
          return b;   
}
int main()
{
        int i,j,n;  
      int a[100][100];
      int sum[100][100];  
      scanf("%d",&n);

    for(i=0;i<n;i++)
               for(j=0;j<=i;j++)
                      scanf("%d",&a[i][j]);
 for(i=n-1;i>=0;i--)
    {
             for(j=0;j<=i;j++)
              {
                     sum[i][j]=a[i][j];
                    if(i!=n-1)
                            sum[i][j]=sum[i][j]+max(sum[i+1][j],sum[i+1][j+1]);
           }
             
      }
     printf("%d\n",sum[0][0]);           
      return 0;
}
原创粉丝点击