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

浙公网安备 33010602011771号