程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj 3176 Cow Bowling (DP)

poj 3176 Cow Bowling (DP)

編輯:C++入門知識

水的數字三角形,DP轉移方程: dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+num[i][j].(j>1);                                                      dp[i][j]=dp[i-1][j]+num[i][j] (j==1) 在最後一行dp[N][i]中找最大即可。 代碼:

 
#include<iostream>  
#include<cstring>  
#include<cstdlib>  
using namespace std;  
const int MAXN=351;  
int dp[MAXN][MAXN];   
int num[MAXN][MAXN];  
int main()  
{  
    int N;  
    while(cin>>N)  
    {  
        memset(dp,0,sizeof(dp));  
        for(int i=1;i<=N;i++){  
            for(int j=1;j<=i;j++)  
                cin>>num[i][j];  
        }  
        dp[1][1]=num[1][1];  
        for(int i=2;i<=N;i++){  
            for(int j=1;j<=i;j++){  
                if(j==1) dp[i][j]=dp[i-1][j]+num[i][j];  
                else dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+num[i][j];  
            }  
        }   
        int ans=0;  
        for(int i=1;i<=N;i++) ans=max(ans,dp[N][i]);  
        cout<<ans<<endl;  
    }  
    return 0;  
}  

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved