SGU 104 Little Shop of Flowers 翻译 题解_C语言

104. Little shop of flowers
每个试验点的时期
内存限度局限: 4096KB

成绩:
你想把花店的橱窗修饰得最处于轻松的。你又是花,每花束都是卓越的的,并且等于实足一排花瓶。。花瓶粘在架子上了。,从1到V延续编号,因而V是花瓶的等于。。1从左到右是最向左的花瓶。,V是正当的花瓶。这些花是可拆开的的。,它们都被表现为1到f。。这些数字是附加加重值于的。:他们决议繁荣和繁荣摆在一排花瓶里的次。,若i

一束秋海棠属的植物(编号2)

一束洋石竹(编号3)。如今所稍微花都得放在花瓶里,并饲料编号。,杜鹃花放在秋海棠属的植物的花瓶里。,Begonia得放在洋石竹的向左花瓶上。。花瓶胜过花朵,在哪儿有个空花瓶。。每个花瓶要指责有花束。。

  每个花瓶都有卓越的的特点(就像繁荣类似于)。 。放在花瓶里的每一束繁荣都有必然的品尝评价。,概数表现的。美术理论评价由下表预约。空瓶的品尝评价是0。

      

花瓶

   

1

2

3

4

5

花朵

1 (杜鹃花)

7

23

-5

-24

16

2 秋海棠属的植物

5

21

-4

10

23

3 洋石竹

-21

5

-4

-20

20

  辩论构成 的创纪录的,把杜鹃花放在2号花瓶上出现得体的。,放4号花瓶真坏了。。
它需求辩论断言铺放以发生最大的AEST。,即使有几种摆法,执政的究竟哪一任一某一一任一某一都是容许的。。

授予:

  • 1 ≤ F ≤ 100,花数。
  • F ≤ V ≤ 100
  • ,花瓶的等于。

  • -50 £ Aij £ 50 ,代表将花i拔出j花瓶发生的品尝值。

输入:

  • 第不育系组编概数f,V
  • 下一件商品F线,每行组编n个概数,这么Aij它是线的数量j(i+2)。。

输入:

  • 第不育系是可以发生的最大的品尝评价。。
  • 第二线输入的为提供,组编F数,数字K代表花瓶中铺放K的花瓶。。

样例:

输入

3 5 7 23 -5 -24 165 21 -4 10 23-21 5 -4 -20 20 

输入

53 2 4 5

================================炫耀的分割线 ================================

  哎呀!,担心的动机的对我来说曾经不存在了。,有数量庞大的数量庞大的不舒服的词需求打量。,你的伴星包含,近期再写,仅有的赠送的担心。 2011年6月8日 21时26分51秒 

  好吧,经典的静态设计:F[i] [j]=max {f[i] [j-1 ],F[I-1 ] [J-1 ] NUM[i],但因有正数,这么我曾经参考了多少次了?,归根结蒂,屡次参考,这以前不要处置不抵抗的的成绩,在网上领会几个人:
,真言实语没读物他加密里dp[i][i-1]=-32767;是干吗,但它实际上处置了负面成绩。,但我决不思索过这样地根本。,等等,看有理性的,它能够组编=mathematics详细情况。,它能够是创纪录的切中要害一任一某一bug,不察觉,呵呵。
更要紧的是这样地

,新颖的的书写技巧风骨,这短距离难担心,归根到底,讲C派,指责馅饼,不小心磨光,没什么可说的,讨论我的乐句。

  我处置正数的办法是在i时每个创纪录的加50。,立即处置正数,继你可以从输入坐果中减去50 *F。,以为如何?请鼓掌好心境,感谢。

#include <stdio.h>
#include
<stdlib.h>
#define INF 0xFFFFF
int ans[101][101];
int num[101][101];
int from[101][101];
#define 最大的量、体积、强度等(A), b) ((a)>(b)?(a):(b)void output(int k, int l)
{
if(k ==1){
printf(
"%d", from[k][l]);
return ;
}
输入(K)
-1, from[k][l] -1);
printf(
" %d", from[k][l]);
return;
}
int main(int argc, char**argv)
{
int f, v;
int i, j;
scanf(
"%d%d", &f, &v);
for(i =1; i <= f; i++){
for(j =1; j <= v; j++){
scanf(
"%d", &num[i][j]);
num[i][j]
+=50;
}
}
for(i =1; i <= f; i++){
for(j =1; j <= v - f + i; j++){
if(ANS[我][j -1] < ANS[我 -1][j -1] + num[i][j]){
ANS[我][j]
= ANS[我 -1][j -1] + num[i][j];
from[i][j]
= j;
}
else{
from[i][j]
= from[i][j -1];
ANS[我][j]
= ANS[我][j -1];
}
}
}
printf(
"%d/n", ans[f][v] -50* f);
输入(F), v);
printf(
"/n");
return0;
}

发表评论