CZH_xixi @ 2024-10-17 18:27:36
本来卡55发现没关注dp改完后归零了但感觉马上成了!!!(附上代码)
#include<bits/stdc++.h>
using namespace std;
int a,b[1001],shu=0,ma=0;
int main(){
scanf("%d",&a);
for(int i=1;i<=a;i++)
{
for(int o=1;o<=i;o++)
{
scanf("%d",&b[o]);
ma=max(ma,b[o]);
}
shu+=ma;
ma=0;
}
printf("%d",shu);
}
以上为55择优(无动规)
#include<bits/stdc++.h>
using namespace std;
int a,b[1002],shu=0,ma=0,di=1;
int main(){
scanf("%d",&a);
for(int i=1;i<=a;i++)
{
for(int o=1;o<=i;o++)
{
scanf("%d",&b[o]);
ma=max(ma,max(b[di],b[di+i]));
di=o;
}
shu+=ma;
cout<<'"'<<ma<<'"';
ma=0;
}
printf("%d",shu-1);
}
(各位犇犇麻烦留下思路(@~@想学习))
by xuzilang @ 2024-10-17 18:44:37
试试二维dp
#include<bits/stdc++.h>
using namespace std;
int n, a[1005][1005], x, ans = 0;
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= i; j++)
{
cin >> x;
a[i][j] += x;
}
for(int j = 1; j <= i+1; j++)
{
a[i+1][j] += max(a[i][j-1], a[i][j]);
ans = max(ans, a[i+1][j]);
}
}
cout << ans;
}
by __Luna__ @ 2024-10-17 18:59:47
调出来了。
好吧你这个根本没法调,因为思路有问题。
这里在改动尽量小(其实是尽量不加新的变量,逻辑结构全部变量)的情况下写了一个解:
#include<bits/stdc++.h>
using namespace std;
int a,b[1002],shu=0,ma=0,di;
int main(){
scanf("%d",&a);
for(int i=1;i<=a;i++)
{
int j=0;
for(int o=1;o<=i;o++)
{
scanf("%d",&di);
shu=max(b[o-1],b[o])+di;
b[o-1]=j,j=shu;
ma=max(ma,j);
}
b[i]=j;
}
printf("%d",ma);
}
好吧和你的代码没有半毛钱关系。动规不是你那么写的喂~
@xuzilang 我想说的是,能压位dp为什么要二位dp。
by __Luna__ @ 2024-10-17 19:00:29
逻辑结构全部变了,我打错字了 @2023_1202
by __Luna__ @ 2024-10-17 19:01:20
@Luna 二维dp(我手怎么这么欠呢喂)
by CZH_xixi @ 2024-10-18 23:07:51
@Luna 谢谢捏
by CZH_xixi @ 2024-10-18 23:08:11
@xuzilang 谢谢你!