主题:[讨论]北京市小学生程序设计友谊赛
pkqs90
[专家分:100] 发布于 2005-11-20 17:05:00
今天考试,有两道题不会。
请教一下:1.小明有一个最多只能装N(键盘输入)斤重东西的网袋。现有白菜5斤,猪肉2斤,鱼3.5斤,酱油连瓶1.7斤,白糖1斤,土豆5.1斤.设计一个程序使小明的网袋所装物品重量最大.即按顺序显示白菜,猪肉,鱼,酱油,白糖,土豆是否装入,装入打印1否则打印0.(注意:各物品不能分割,要么装,要么不装)
显示格式:只有一行
例如:101100 (说明:表示装入 白菜,鱼,酱油)
回复列表 (共9个回复)
沙发
moz [专家分:37620] 发布于 2005-11-20 19:43:00
dim d(6)
input "N=";d(0)
d(1)=5 '白菜
d(2)=2 '猪肉
d(3)=3.5 '鱼
d(4)=1.7 '酱油
d(5)=1 '白糖
d(6)=5.1 '土豆
s=2^6-1 '二进制的111111
for i=0 to s
c=0
for j=1 to 6
if i and 2^(j-1) then c=c+d(j)
next
if c<=d(0) and c>m then
m=c
mi=i
endif
next
for j=0 to 5
if mi and 2^j then print "1"; else print "0";
next
板凳
pkqs90 [专家分:100] 发布于 2005-11-22 18:50:00
做错了,也不试一下就拿上来,真是的
3 楼
moz [专家分:37620] 发布于 2005-11-22 19:36:00
哦?
有这样的事情?
是我晚年失节了?
你能告诉我错在哪了吗?
4 楼
moz [专家分:37620] 发布于 2005-11-22 19:42:00
喔,是我错了,我把顺序弄反了
把倒数第三行的
for j=5 to 0 step -1
改成
for j=0 to 5
就行了
5 楼
pkqs90 [专家分:100] 发布于 2005-11-23 17:16:00
能不能给我说清楚一点呢?如果我明白的话,我会再给你加30分的
6 楼
moz [专家分:37620] 发布于 2005-11-23 20:49:00
那不明摆着吗? 我已经改正过来了啊.
反正而且你也不可能再给我加三十分了.
7 楼
pkqs90 [专家分:100] 发布于 2005-11-24 20:54:00
你的那个什么“if 2^j and mi”是什么东东?,(20分)
8 楼
moz [专家分:37620] 发布于 2005-11-25 12:09:00
mi 是结果
是最后得数,是答案
and 2^j 是检验二进制的某一位是否为1
若为1, if条件为真,
若非1, if条件为假.
9 楼
jyf1987 [专家分:930] 发布于 2005-11-25 17:32:00
moz你急着要分干什么啊?
你想要分我专门开帖子给你分怎么样?
我来回复