一道题我找不出错, 急。。。。。

nj20091571 2010-05-15 12:23:20
有时候为了备份重要的文件,需要将这些文件备份到软盘上。每个空白软盘的容量是1.44MB。你需要备份的16个文件的大小分别为:46KB,55KB,62KB,87KB,108KB,114KB,137KB,164KB,253KB,364KB,372KB,388KB,406KB,432KB,461KB,851KB。假定你无法使用压缩软件,但软盘数量足够,那么应如何将这些文件分配到每一张软盘上才能使使用的软盘数目最少?


public class 文件保存
{
public static void main(String args[])
{
double a[]=new double[] {46,55,62,87,108,114,137,164,253,364,372,388,406,432,461,851};
double sum=0;
int i=0;
int b=0;
int x=0;

do
{
{
sum=sum+a[a.length-1-x]+a[i];
for(int j=0;j<16;j++)
{
if(sum<1447.57)
{
i++;
sum+=a[i];

}if(sum>1447.56)
{
sum-=a[i];
i-=1;
}
}
}
b++;
x++;
i++;






}while(i!=a.length-1);

System.out.println(b);

}


}



错在哪里啊 我刚学
...全文
83 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nj20091571 2010-05-16
  • 打赏
  • 举报
回复
能不能帮我重写一下;运行时首先是sum=sum+a[a.length-1-x]+a[i];出错
忘年之 2010-05-15
  • 打赏
  • 举报
回复
错在:
sum-=a[i];
i-=1;
因为你i=0的时候,i-=1,i的值就是-1了,a[-1]会报错
忘年之 2010-05-15
  • 打赏
  • 举报
回复
你的算法不是最优,比如:
46+62+87+108+137+253+364+372=第一盘
55+164+388+406+432=第二盘
114+461+851=第三盘
只需要3个盘就够了
忘年之 2010-05-15
  • 打赏
  • 举报
回复
如果你不改变算法的话,可以在:
b++;
x++;
i++;
后面加句:
sum = 0;

50,547

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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