NoraHayes @ 2017-10-18 17:51:27
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1010;
int dis[maxn][maxn];
int data[maxn][maxn];
int line;
int main()
{
cin>>line;
for(int i=0;i<line;i++)
{
for(int j=0;j<i;j++)
{
cin>>data[i][j];
dis[i][j]=data[i][j];
}
}
for(int i=line-1;i>0;i--)
{
for(int j=0;j<i;j++)
{
dis[i][j]=data[i][j]+max(dis[i+1][j],dis[i+1][j+1]);
if(dis[i][j]==data[i][j])break;
}
}
cout<<dis[1][1]<<endl;
return 0;
}
by NoraHayes @ 2017-10-18 17:51:51
完全不知道到底错在哪里orz
by NoraHayes @ 2017-10-18 17:55:14
啊贴错了 是这个
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1005;
int d[maxn][maxn];
int data[maxn][maxn];
int line;
int main()
{
cin>>line;
for(int i=1;i<=line;i++)
{
for(int j=1;j<=i;j++)
{
cin>>data[i][j];
d[i][j]=data[i][j];
}
}
for(int i=line-1;i>0;i--)
{
for(int j=1;j<=i;j++)
{
d[i][j]=data[i][j]+max(d[i+1][j],d[i+1][j+1]);
if(d[i][j]==data[i][j])break;
}
}
cout<<d[1][1]<<endl;
return 0;
}
by 兮水XiShui丶 @ 2017-10-21 14:04:38
@NoraHayes 就是个简单的DP水题,没什么难度啊QAQ
你看下我的代码:
#include<iostream>
#include<algorithm>
int f[1005][1005];
using namespace std;
int main()
{
int n;cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
cin>>f[i][j];
for(int i=n-1;i>=1;i--)
for(int j=1;j<=i;j++)
f[i][j]=max(f[i][j]+f[i+1][j],f[i][j]+f[i+1][j+1]);
cout<<f[1][1];
}
by KillerXu @ 2017-10-25 21:32:13
真是坑的不要不要的,数组开1001*1001过不了,开1005*1005就过了
by Frank06 @ 2017-10-28 18:17:06
@许思远 我这样也能过啊
#include<iostream>
using namespace std;
int r,dp[1001][1001];
int main()
{
cin>>r;
for(int i=1;i<=r;i++)
for(int j=1;j<=i;j++)
cin>>dp[i][j];
for(int i=r-1;i>=1;i--)
for(int j=1;j<=r;j++)
dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]);
cout<<dp[1][1];
return 0;
}
by KillerXu @ 2017-10-30 22:04:39
@Frank06 说明我的电脑有毒= =
by _LanFeng_ @ 2017-12-22 17:55:34
@许思远 1001*1001我也过了啊