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

0:00:00 2019年10月12日 by:

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

成绩:
你想把花店的窗户修饰得最舒服。你有花束,每束花都清楚的。,实足一排花瓶。花瓶粘在架子上了。,从1到v是延续编号的。,因而v是花瓶的全部蕴含。。从左到右1是最左的花瓶。,V是最立刻的花瓶。花朵都是可免职的,它们表现为1到f。。这些数字是吝啬的的。:他们决议了花和花瓶的猛推次。,若i

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

一束麝香石竹(3号)。如今所某个花都只好放在花瓶里,并按次保管,杜鹃雄器苞放在一点钟花瓶里,只好放在秋海棠属的植物的左。,秋海棠属的植物只好放在麝香石竹左的花瓶里。。假如花瓶比花多,有一点钟空花瓶。。每个花瓶不得不装花束。。

  每个花瓶都有清楚的的特质(就像一朵花) 。花瓶里的每一朵花都有必然的滋味花费。,用概数表现。下表装备了美术理论花费。空花瓶的美术理论值为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号花瓶就很可惜了。
需求按询问猛推,才干发生最大的滋味花费,假如有几个的钟摆,普通的一点钟都是容许的。。

如果:

  • 1 ≤ F ≤ 100,代表花朵的数量。
  • F ≤ V ≤ 100
  • ,表现花瓶的全部蕴含。

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

出口:

  • 第支座 反力影响线包罗概数f,V
  • 接下来F行,每行包罗n个概数,这么Aij这是第19行数字(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]=极大值{f[i][j-1],f[i-1][j-1] num[i][j],但因有正数。,因而我不注意计算关系到的全部蕴含。,总的来说,屡次关系到,正数成绩还不注意处置。,在网上一下子看到几个的人的处置方案:
,老实说,我不懂得他的编码做成某事dp[i][i-1]=-32767;为什么?,但它全然处置了正数成绩。,但我还没搞清楚规律。,等等。,你能读懂吗?,它可能性包罗算学蕴含。,或许可能性是信息使有缺陷。,不意识,呵呵。
更与众清楚的的是这么地。

,优良的特约稿创作,稍微难懂得。,全面衡量,双面碧昂丝C。,缺陷体育神学院学生,没小心精良,没什么好说的。,谈谈我的意向。

  我处置正数的方式是在出口时将每个信息加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 ;
}
output(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(答复[我]][j -1] < 答复[我] -1][j -1] + num[i][j]){
答复[我]][j]
= 答复[我] -1][j -1] + num[i][j];
from[i][j]
= j;
}
else{
from[i][j]
= from[i][j -1];
答复[我]][j]
= 答复[我]][j -1];
}
}
}
printf(
"%d/n", ans[f][v] -50* f);
出口(F), v);
printf(
"/n");
return0;
}

>>我想说两句

告诉我你的想法... , 如果你想在评论中显示自定义头像, 请点击 gravatar!

注意:广告、垃圾评论、灌水请绕行。