ACM PKU 1163 The Triangle 简单的动态规划就像是APM小于等于100的WAR3玩家

ACM PKU 1163 The Triangle 简单的动态规划就像是APM小于等于100的WAR3玩家

http://acm.pku.edu.cn/JudgeOnline/problem?id=1163
简单的动态规划就像是APM小于等于100的WAR3玩家,可以变着戏法来随便虐待.
递推式的动归、记忆化搜索,或者稍微优化一下的搜索……

呵呵,

a[i][j]是i排第j个数
f[i][j]是到达a[i][j]时可以得到的最大总和.
显然只能从a[i-1][j-1]和a[i-1][j]两条路来到a[i][j]
故状态转移方程为 f[i][j]=max{a[i-1][j],a[i-1][j-1]}+a[i][j]
注意边界条件即可
#include  " stdio.h "
int  a[ 100 ][ 100 ];
int  f[ 100 ][ 100 ];


int  max( int  x, int  y)
{
    
if(x>y)return x;
    
else return y;
}



void  main()
{

    
int result;
    
int i,j;
    
int m;

    scanf(
"%d",&m);
    
for(i=1;i<=m;i++)
        
for(j=1;j<=i;j++)
            scanf(
"%d",&a[i][j]);    

    f[
0][0]=0; f[0][1]=0;
    
for(i=1;i<=m;i++)
    
{
        f[i][
0]=0;f[i][i+1]=0;
        
for(j=1;j<=i;j++)
            f[i][j]
=max(f[i-1][j-1],f[i-1][j])+a[i][j]; 
    }



    result
=f[m][1];
    
for(i=1;i<=m;i++)
        
if(f[m][i]>result)result=f[m][i];
    printf(
"%d\n",result);


}


你可能感兴趣的:(ACM PKU 1163 The Triangle 简单的动态规划就像是APM小于等于100的WAR3玩家)