算法训练 数字三角形

来源:互联网 发布:java培训ujiuye 编辑:程序博客网 时间:2024/05/16 09:42

最基础的dp题

下面这个不知道为什么只能过28%

#include <cstdio>#include <algorithm>using namespace std;int n,t;int a[110][110],dp[2][110];int main(){scanf ("%d",&n);for (int i=1;i<=n;i++) {for (int j=1;j<=i;j++)     scanf ("%d",&a[i][j]);}for (int i=1;i<=n;i++)    dp[0][i]=a[n][i];for (int i=n-1,t=0;i>=1;i--,t=1-t) {for (int j=1;j<=i;j++) {dp[1-t][j]=max(dp[t][j]+a[i][j],dp[t][j+1]+a[i][j]);}}printf ("%d\n",dp[t][1]);return 0;}


下面这个可以过

#include <cstdio>#include <algorithm>using namespace std;int n,t;int a[110][110];int main(){scanf ("%d",&n);for (int i=1;i<=n;i++) {for (int j=1;j<=i;j++)     scanf ("%d",&a[i][j]);}for (int i=n-1;i>=1;i--,t=1-t) {for (int j=1;j<=i;j++) {a[i][j]=a[i][j]+max(a[i+1][j],a[i+1][j+1]);}}printf ("%d\n",a[1][1]);return 0;}



0 0