救人一命,胜造七级浮屠

wonderguo 2003-09-23 05:27:52
1999年下午试题第六题,我看了两天。把头都看大了,没看懂
请教各位大虾拔刀相助
...全文
36 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wonderguo 2003-09-26
  • 打赏
  • 举报
回复
经过楼上大哥的指点,昨晚又看一晚。终于。。。。。。。。。有点懂了。。。。。。
谢谢!!!!!!!!!
whyes 2003-09-24
  • 打赏
  • 举报
回复
新版清华版教程上有还算详细的讲解,你自习看一看。
尤其是那个示意图。
moke33 2003-09-24
  • 打赏
  • 举报
回复
自己先慢慢看吧
wonderguo 2003-09-23
  • 打赏
  • 举报
回复
#include <stdio.h>

#define N 100

double limw;

int opts[N]; /* 存储临时最佳的选择方案,当opts[i]为1,物品i在解中 */

struct elem { double weight;

double value;

} a[N]; /* 物品的重量和价值信息 */

int k, n ;

struct { int flg; /* 物品的考虑状态:0:不选,1:将被考虑,2:曾被选中 */

double tw; /* 已达到的总重量 */

double tv; /* 期望的总价值 */

}twv[N]; /* 当前候选解中各物品的考虑状态,以及候选解的状态 */

main()

{ double maxv, find();

printf(“Enter number of matter. “); scanf(“%d”, &n);

printf(“Enter limit of weight. “); scanf(“%1f”, &limw);

printf(“Enter weight and values of matters. “);

for (k = 0; k < n; k++) scanf(“%1f%1f”, &a[k].weight, &a[k].value);

maxv = find(a,n);

for(k = 0; k < n; k++) if(opts[k]) printf(“%4d”, k);

printf(“\nTotal value = %1f\n”, maxv);

}

next(int i , double tw, double tv) /* 将考虑i号物品 */

{ twv[i].flg = 1; twv[i].tw = tw; twv[i].tv = tv; }

look(int i, int *f, double *tw, double *tv) / * 取i 号物品在解中的状态信息 * /

{ *f = twv[i].flg; *tw = twv[i].tw; *tv = twv[i].tv; }

double find (struct elem *a, int n )

{ int i, k, f;

double maxv, tw, tv, totv = 0.0;

maxv = 0;

for(k=0; k < n; k++) ____(1)____;

next(0, 0.0, totv);

i = 0;

while(i >= 0) {

look(i, &f, &tw, &tv);

switch (f) {

case 1: twv[i].flg++; /* 先考虑被选中 */

if(____(2)____ <= limw) /* 选中可行吗? */

if(i < n-1) { /* 后面还有物品吗? */

next(____(3)____); /* 置i+1物品的状态 */

i++;

}

else if (tv > maxv) { /* 是一个更好的候选解吗? */

maxv = tv;

for(k = 0; k < n; k++)

opts[k] = twv[k].flg != 0;

}

break;

case 0: i--; break; /* 回退 */

default: /* f == 2 */

twv[i].flg = 0;

if (____(4)____) /* 不选i号物品可行吗? */

if(i < n-1) { /* 后面还有物品吗? */

next(____(5)____);

i++;

}

else {

maxv = tv – a[i].value;

for(k = 0; k < n; k++)

opts[k] = twv[k].flg != 0;

i--;

}

break;

}

}

return maxv;

}

2,959

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧