当前位置: > 求一个程序,内容是这样的,我举个例子:将9、4、3、2这四个数随机组合,使每组中的数之和≤10...
题目
求一个程序,内容是这样的,我举个例子:将9、4、3、2这四个数随机组合,使每组中的数之和≤10
再举个实际的例子:我家有很多根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;
举一反三
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
1,人们染上烟瘾,最终因吸烟使自己丧命.
版权所有 CopyRight © 2012-2019 超级试练试题库 All Rights Reserved.