SGU 104 Little Shop of Flowers 翻译 题解 – zqynux

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 16
5 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;
}

发表评论