如何使用dp自上而下的方法解决它?

时间:2017-07-29 02:34:07

标签: dynamic-programming

我使用动态编程自上而下的方法解决了这个问题http://www.spoj.com/problems/BYTESM2/,但是获得了WA。

有任何逻辑错误吗?

有人可以提供有关它失败的情况的见解。谢谢。

int max1(int a,int b,int c)
{
    return max( max(a,b),c );
}

int main()
{

        int t;
        cin >> t;
        while(t--)
        {
            int r,c;
            cin >> r >> c;
            int dp[r][c+2]={0};
            int i,j;
            for(i=0;i<r;++i)
            {
                for(j=1;j<=c;++j)
                {
                   cin >> dp[i][j];
                }
            }

            for(i=1;i<r;++i)
            {
                for(j=1;j<=c;++j)
                {

                    dp[i][j] += max1( dp[i-1][j-1],dp[i-1][j],dp[i-1][j+1] );

                }
            }


            int m=-1;
            for(i=0;i<c;++i)
            {
                m = max(m,dp[r-1][i]);
            }

            cout << m << endl;

        }


}

0 个答案:

没有答案