在出发去度假之前,你希望将你的一些最重要的文件备份到软盘上.每个空白软盘的容量是1.44MB.你需要备份的16 个文件的大小分别为:46KB,55KB,62KB,87KB,108KB,114KB,137KB,164KB,253KB,364KB,372KB,388KB,406KB,43
来源:学生作业帮助网 编辑:作业帮 时间:2024/10/23 15:17:29
在出发去度假之前,你希望将你的一些最重要的文件备份到软盘上.每个空白软盘的容量是1.44MB.你需要备份的16 个文件的大小分别为:46KB,55KB,62KB,87KB,108KB,114KB,137KB,164KB,253KB,364KB,372KB,388KB,406KB,43
在出发去度假之前,你希望将你的一些最重要的文件备份到软盘上.每个空
白软盘的容量是1.44MB.你需要备份的16 个文件的大小分别为:46KB,55KB,
62KB,87KB,108KB,114KB,137KB,164KB,253KB,364KB,372KB,388KB,
406KB,432KB,461KB,851KB.假定你无法使用压缩软件,但软盘数量足够,
那么应如何将这些文件分配到每一张软盘上才能使使用的软盘数目最少?
3楼方法?别说是凑的。编程的话给个算法,
在出发去度假之前,你希望将你的一些最重要的文件备份到软盘上.每个空白软盘的容量是1.44MB.你需要备份的16 个文件的大小分别为:46KB,55KB,62KB,87KB,108KB,114KB,137KB,164KB,253KB,364KB,372KB,388KB,406KB,43
算法:
先从大到小排好,你给的数据是从小到大排的
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
作弊
第一张: 1432KB
55KB,253KB,364KB,372KB,388KB
第二张: 1436KB
137KB,406KB,432KB,461KB
第三张: 1432KB
46KB,62KB,87KB,108KB,114KB,164KB,851KB。
用3个盘
46 62 406 55 87 432 108 114 164
461 253 372 388
364 851 137
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,16...
全部展开
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个文件;
其他文件存在第三张软盘上,可以满足要求。
所以,
上面这种存法使用的软盘数目最少。
收起
用lingo做一下优化就行了啊...很简单的....
51p[k
用Matlab程序做 里面的lingo做一下优化
可以先下载这样一个
程序