一道算法题 现在有几个乘积,a1*n1,a2*n2,a3*n3,............其中a1,a2,a3为材料长度,n1,n2,n3为材料数量,想让在尽可能用完材料数量的情况下拼料,例如a1*(n1-2)+a2*(n2-1)+........,要求和大于5800小于5970,a1和n1不固定,不一定每次都得用上a1,a2,a3。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for .. to .. if ... 三个变量for .. to .. for .. to .. for .. to .. if sum>5800 and sum < 5870 then .. for(i = n1;i>=0;i--) for(j = n2;j >= 0;j--) for(k = n3;k >= 0;k--) 求sum if(sum > 5800 && sum < 5970) 则第一次满足此条件的组合一定是用料最多的如果有很多种材料,那就不能简单的N重循环,要另想方法 这是一个循环:从最小的开始选,选完一种要计算SUM,与5800比较。1.如果比它小,再循环,即从剩下的材料中再选取最小的。2.如果比它大,与5970比较。 一。如果比它小,则这种材料全选,然后再从剩下的材料中选取最小的。 二。如果比它大,则用5970-SUM除以这种材料的单位价格,得到这种材料取的长度。跳出循环。最后可以得到一个最优解。 多典型的动态规则啊,一个个说写 for 循环的根本就没通用性 关于Float转INT的问题? 问一个初级的问题:c/s结构的系统应该怎样设计?三层的又是怎样的? 怎样判断某个iis站点是启动还是停止的? 如何改变用HOOK截获的键值??? 怎样取得网页上的图片?高分! 如何启动带参数的程序! 关于打印? 关于SQL语句,同样的问题!再问一次! dbgrideh中粘贴数据 请问在哪儿可以找到免费的数据库备份控件(有说明文档)? 如何修改,可以使这段代码实现多通道播放的功能? 如何中止向数据库读写数据?
if ...
for .. to ..
for .. to ..
for .. to ..
if sum>5800 and sum < 5870 then ..
for(j = n2;j >= 0;j--)
for(k = n3;k >= 0;k--)
求sum
if(sum > 5800 && sum < 5970)
则第一次满足此条件的组合一定是用料最多的如果有很多种材料,那就不能简单的N重循环,要另想方法
1.如果比它小,再循环,即从剩下的材料中再选取最小的。
2.如果比它大,与5970比较。
一。如果比它小,则这种材料全选,然后再从剩下的材料中选取最小的。
二。如果比它大,则用5970-SUM除以这种材料的单位价格,得到这种材料取的长度。跳出循环。最后可以得到一个最优解。