[USACO 1.5.1]数字金字塔
地址:http://hustoj.sinaapp.com/problem.php?id=1833
动态规划
a[i][j]储存输入的金字塔,F[i][j]储存a[i][j]处能达到的最大值
状态方程:F[i][j]=max{F[i+1][j], F[i+1][j+1]}+a[i][j]
1 #include<stdio.h> 2 int n; 3 int a[1000][1000]={0},F[1000][1000]={0}; 4 5 int main() 6 { 7 int i,j; 8 scanf("%d",&n); 9 for(i=0;i<n;i++) 10 for(j=0;j<=i;j++) 11 { 12 scanf("%d",&a[i][j]); 13 } 14 for(i=n-1;i>=0;i--) 15 for(j=0;j<=i;j++) 16 { 17 if(i==n-1) F[i][j]=a[i][j]; 18 else 19 { 20 F[i][j]=(F[i+1][j]>F[i+1][j+1]?F[i+1][j]:F[i+1][j+1])+a[i][j]; 21 } 22 } 23 printf("%d\n",F[0][0]); 24 return 0; 25 }

浙公网安备 33010602011771号