数模问题!高分悬赏!答案好的追加分!数模高手帮忙!谢谢~

在出发去度假之前,你希望将你的一些最重要的文件备份到软盘上。每个空
白软盘的容量是1.44MB。你需要备份的16 个文件的大小分别为:46KB,55KB,
62KB,87KB,108KB,114KB,137KB,164KB,253KB,364KB,372KB,388KB,
406KB,432KB,461KB,851KB。假定你无法使用压缩软件,但软盘数量足够,
那么应如何将这些文件分配到每一张软盘上才能使使用的软盘数目最少?
3楼方法?别说是凑的。。。编程的话给个算法,谢谢

算法:
先从大到小排好,你给的数据是从小到大排的
46KB,55KB, 62KB,87KB,108KB,114KB,137KB,164KB,253KB,364KB,372KB,388KB,406KB,432KB,461KB,851KB
然后1.44MB=1.44x1024KB=1474KB
然后从16个数据中依次由大到小加下去,851+461=1312<1474
再用1474-1312=162,所以下一个是加137
1312+137=1449<1474
再用1474-1449=25,发现数据中没有比25小的
所以第一次结束
第一次851+461+137

接下来再处理剩下的13个数
46KB,55KB, 62KB,87KB,108KB,114KB,164KB,253KB,364KB,372KB,388KB,406KB,432KB
从13个数据中依次由大到小加下去,432+406=838<1474
1474-838=636,所以下一个加388
838+388=1226<1474
1474-1226=248,所以下一个加164
1226+164=1390<1474
1474-1390=84,所以下一个加62
1390+62=1452,
1474-1452=22,发现数据中没有比25小的
所以第二次结束
第二次432+406+388+164+62

接下来再处理剩下的8个数
46KB,55KB, 87KB,108KB,114KB,253KB,364KB,372KB
从8个数据中依次由大到小加下去,372+364=736<1474
1474-736=738,所以下一个加253
738+253=991<1474
1474-991=583,所以下一个加114
991+114=1105<1474
1474-1105=369,所以下一个加108
1105+108=1213<1474
1474-1213=261,所以下一个加87
1213+87=1300<1474
1474-1300=174,所以下一个加55
1300+55=1355<1474
1474-1355=119,所以下一个加46
1355+45=1400<1474
至此已经选完了
第三次选的结果是46+55+87+108+114+253+364+372

三次选完,所以需要三张
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-24
第一张: 1432KB
55KB,253KB,364KB,372KB,388KB

第二张: 1436KB
137KB,406KB,432KB,461KB

第三张: 1432KB
46KB,62KB,87KB,108KB,114KB,164KB,851KB。
第2个回答  2009-04-24
用3个盘
46 62 406 55 87 432 108 114 164

461 253 372 388

364 851 137
第3个回答  2009-04-24
46+55+...+851=4300
4300/1440 = 430/144 = 215/72 = 3 - 1/72.
所以,至少需要3张软盘。

1440 - (851+461) = 128 = 114 + 14, [851,461,114]...14
1440 - (432+406+388)= 214 = 164 + 46 + 4, [432,406,388,164,46]...4
1440 - (372+364+253+137+108+87+62+55)=2,[372,364,253,137,108,87,62,55]...2

这样,
第一张存大小分别为851,461,114(KB)的3个文件;
第二张存大小分别为432,406,388,164,46(KB)的5个文件;
其他文件存在第三张软盘上,可以满足要求。

所以,
上面这种存法使用的软盘数目最少。
第4个回答  2009-04-24
51p[k
第5个回答  2009-04-24
用Matlab程序做 里面的lingo做一下优化
可以先下载这样一个
程序
相似回答