题目
求一个程序,内容是这样的,我举个例子:将9、4、3、2这四个数随机组合,使每组中的数之和≤10
再举个实际的例子:我家有很多根10米长的绳子,现在我要剪出9米的,4米的,3米的,2米的总共四节,如何剪才能最省?
4米的、3米的、2米的在一根绳子上剪,9米的在一根绳子上剪,最少总共需要2根绳子,是最省的.
程序中的需要自定义的项目分别是:我家这些绳子的长度L,要剪断的长度A,B,C,D,E,F,G,H.
再举个实际的例子:我家有很多根10米长的绳子,现在我要剪出9米的,4米的,3米的,2米的总共四节,如何剪才能最省?
4米的、3米的、2米的在一根绳子上剪,9米的在一根绳子上剪,最少总共需要2根绳子,是最省的.
程序中的需要自定义的项目分别是:我家这些绳子的长度L,要剪断的长度A,B,C,D,E,F,G,H.
提问时间:2021-04-01
答案
php给你个思路
//采用递归
$_length_array = array(1,2,2,2,2,3,3,5,6,7,8,9,9,9,9,9);//需要剪切的绳子
$_len = 10;//一根绳子的长度
$_num = 0;//用掉多少条绳子
$_has_len = $_len;//一根绳子还剩多长 初始为$_len
if (0 < count($_length_array)) {
//如果有数据,至少为1
$_num = 1;
}
getNum();
function getNum()
{
global $_length_array;
global $_len;
global $_num;
global $_has_len;
//循环数组中的每个长度
foreach ($_length_array as $_key=>$_val) {
if ($_has_len>$_val) {
//如果剩下的绳子大于当前长度 就把当前的剪掉
$_has_len = $_has_len-$_val;
unset($_length_array[$_key]);//把它从数组中去掉
if (0 == $_has_len) {
//如果绳子被剪完 num++
$_num++;
getNum();
return;
}
//在数组中寻找是否有剩下绳子长度
$_other_key = array_search($_has_len,$_length_array);
if ($_other_key) {
//如果存在,num++
unset($_length_array[$_other_key]);
$_num++;
$_has_len = $_len;
getNum();
return;
} else {
getNum();
return;
}
} else {
$_num++;
$_has_len = $_len;
getNum();
return;
}
}
}
echo $_num;
exit;
//采用递归
$_length_array = array(1,2,2,2,2,3,3,5,6,7,8,9,9,9,9,9);//需要剪切的绳子
$_len = 10;//一根绳子的长度
$_num = 0;//用掉多少条绳子
$_has_len = $_len;//一根绳子还剩多长 初始为$_len
if (0 < count($_length_array)) {
//如果有数据,至少为1
$_num = 1;
}
getNum();
function getNum()
{
global $_length_array;
global $_len;
global $_num;
global $_has_len;
//循环数组中的每个长度
foreach ($_length_array as $_key=>$_val) {
if ($_has_len>$_val) {
//如果剩下的绳子大于当前长度 就把当前的剪掉
$_has_len = $_has_len-$_val;
unset($_length_array[$_key]);//把它从数组中去掉
if (0 == $_has_len) {
//如果绳子被剪完 num++
$_num++;
getNum();
return;
}
//在数组中寻找是否有剩下绳子长度
$_other_key = array_search($_has_len,$_length_array);
if ($_other_key) {
//如果存在,num++
unset($_length_array[$_other_key]);
$_num++;
$_has_len = $_len;
getNum();
return;
} else {
getNum();
return;
}
} else {
$_num++;
$_has_len = $_len;
getNum();
return;
}
}
}
echo $_num;
exit;
举一反三
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
1,人们染上烟瘾,最终因吸烟使自己丧命.
最新试题
- 1现有30度时的硝酸钠溶液100g,若在温度不变的条件下 加入5g硝酸钠或蒸发20g水 该温下 硝酸钾的溶解度是
- 2照样子,请你做做词语归类 例如:笔墨纸砚----文房四宝
- 3翻译The truth of her life was a desire to see beyond the surface for a glimpse of what it is that matt
- 4云母屏风烛影深,下一句是什么?这首是选自什么?写的《 》. 这首古诗写出了嫦娥什么的心情?
- 52.8克N2和2.8克CO所含有电子数是否相同?是多少?
- 6一个铝原子共有40个粒子,其中14个粒子不带电,则铝的相对原子质量为_.
- 7LED灯带粘玻璃上 可以用透明胶带固定吗 不可以的话拿什么材料固定 谢谢
- 8在足球赛中,红队球员在白队禁区附近主罚定位球,并将球从球门右上角擦着横梁踢进球门.球门高度为h,足球飞入球门的速度为v,足球的质量m,则红队球员将足球踢出时的速度v0= _ ,该
- 9以书为话题的文字不少于50字阐述自已对书的认识
- 10邻苯二甲酸氢钾与氢氧化钠反应比
热门考点
- 1风导致地球怎样变化
- 2甲和乙进行射击比赛,约定击中一发得20分,脱靶一发扣12分,两人各打了10发,共得208分,其中甲比乙多64分
- 3已知圆台的上下底面半径分别是2、5,且侧面面积等于两底面面积之和,求该圆台的母线长( ) A.297 B.217 C.29 D.254
- 4Sunville has something for everyone.
- 5内锥度图纸是30度为什么测试60度
- 6in the early hours of 13,2001
- 7将一张边长12厘米的正方形纸,对折再对折,每一个小长方形的周长是多少厘米?
- 8邻菲罗啉分光光度法测定微量铁实验思考题:
- 9如果一个国家发生了通货膨胀,且假定人民的收入水平不变,那么这个国家的恩格尔系数会( )
- 10腊七腊八,冻死寒鸦类似的语句