POJ 1163 The Triangle

题目来源:http://poj.org/problem?id=1163

这是一道典型的动态规划题目,我采用的是顺推法,做这个题目,发现状态对于动态规划的重要性;

其方程为:f[i][j]+=max(f[i-1][j],f[i-1][j-1]);

其程序如下:

View Code
 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int max(int a,int b)
 5 {
 6     return a>b?a:b;
 7 }
 8 int num[105][105];
 9 int main()
10 {
11     int n;
12     int i,j;
13     int sum;
14     while(cin>>n)
15     {
16         sum=0;
17         for(i=1;i<=n;i++)
18         {
19             for(j=1;j<=i;j++)
20                 cin>>num[i][j];
21         }
22         
23         for(i=1;i<=n;i++)
24             for(j=1;j<=i;j++)
25             {
26                 num[i][j]=num[i][j]+max(num[i-1][j],num[i-1][j-1]);
27                     if(i==n && sum<num[i][j])
28                  sum=num[i][j];
29             }
30         cout<<sum<<endl;
31     }
32     return 0;
33 }

希望神牛们,能指点指点动态规划方面的学习,发觉有点难!!!

2012-07-20

 

posted on 2012-07-20 13:50  l流沙  阅读(120)  评论(0)    收藏  举报

导航