ACMSTEP 3.2.6 数塔 //DP

来源:互联网 发布:c语言面试常见问题 编辑:程序博客网 时间:2024/06/07 14:47

原题链接

这题和POJ里面的 1163 The Triangle 一模一样,我记得那是我AC的第一个DP的题。呵呵。


#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <cctype>#include <string>#include <vector>#include <queue>#include <algorithm>using namespace std;int main(){int n,i,j,max,cases;;int num[100][100],a[100][100];cin>>cases;while (cases--){cin>>n;memset(num,0,sizeof(num));memset(a,0,sizeof(a));for (i=0;i<n;i++)for (j=0;j<=i;j++)cin>>num[i][j];a[0][0]=num[0][0];for (i=1;i<n;i++){for (j=0;j<=i;j++){if (j==0) a[i][j]=a[i-1][j]+num[i][j];else if (j!=0){if (num[i][j]+a[i-1][j-1]>num[i][j]+a[i-1][j])a[i][j]=num[i][j]+a[i-1][j-1];else a[i][j]=num[i][j]+a[i-1][j];}}}max=a[n-1][0];for (i=1;i<n;i++){if (a[n-1][i]>max) max=a[n-1][i];}cout<<max<<endl;}return 0;}