Saki也想要变强之Saki的一日一题

Saki在学习算法的过程中感受到了很大的阻碍,而且Saki的代码水平也比fbl弱十个图灵级别,那么怎么样才能让Saki变得跟fbl一样强呢?Saki决定勤能补拙,即一天做一道题,这样或许有朝一日变得跟fbl一样强吧(wozaixiangpichi).
day1
题目:
给一条钢管,切割成不同长度的钢管(也可以不切割),不同的钢管长度对应不同的价值,求这根钢管获得的最大价值。
输入:
第一行包含一个正整数L,为钢管的长度。

第二行包含L个正整数a1...aL,为长度从1到L的钢管对应的价值。
输出:
输出一行,为钢管能获得的最大价值。
代码:
include<stdio.h>
include<limits.h>
int p[300010];
int max(int a, int b){
if(a>b)
return a;
else return b;
}
int main()
{
int l,i,j,a[300010],temp;
scanf("%d",&l);
for(i=1;i<=l;i++){
scanf("%d",&a[i]);
}
p[0]=0;
for(j=1;j<=l;j++){
temp=-1;
for(i=1;i<=j;i++){
temp=max(temp,a[i]-p[j-i]);
}
p[j]=temp;
}
printf("%d",p[l]);
}
心得明天更新。
心得:很简单的动态规划,没啥好说的。核心代码:
for(j=1;j<=l;j++){
temp=-1;
for(i=1;i<=j;i++){
temp=max(temp,a[i]-p[j-i]);
}
p[j]=temp;
}
从1——n求出每一种长度的最优解,在通过遍历之前的最优解加上剩余长度的价值,求得当前最优解,最后输出长度为n的最优解就行了。(感觉dalao fu十秒之内就能做出来
话说有人能教我怎么在这个页面添加代码吗?

posted @ 2020-10-28 23:58  Yaegaki_Erika  阅读(76)  评论(1)    收藏  举报