
请程序高手帮忙………………
37060.5/33276/63965/48118.5/48182/19246.5/44013.5/35149/37626/2818/这10个数中,求哪几个...
37060.5/33276/63965/48118.5/48182/19246.5/44013.5/35149/37626/2818/这10个数中,求哪几个数的和等于175719
展开
1个回答
展开全部
追问
能算出结果吗?我要的是结果。不是方法。
追答
经过matlab编程验证,你这题数据有问题,运算了找不到正确的组合方式。你可以试试自己在这里面找几个数相加替换掉175719,例如 33276 63965 48118.5 48182 的和193541.5代入下面的程序,就可以运行成功。希望你能理解!
程序如下:
clear;clc
a=[37060.5 33276 63965 48118.5 48182 19246.5 44013.5 35149 37626 2818];
%b=175719;
b=193541.5;
for i=1:1023 %1023的二进制为1111111111
c=zeros(1,10); %初始化长度为10的全0数组
two=dec2bin(i); %将i转化为二进制
len=length(two);%求two的长度
for j=1:len
c(10-j+1)=str2num(two(len-j+1));%将二进制数附到c数组中,位数不够的部分为0
end
he=a.*c; %数组点乘,这样就实现了a数组中10个数的0/1背包问题,即遍历所有可能
zong=sum(he);%求出本次所选数的和
if zong==b;%与目标值进行比较,若匹配成功则输出
jieguo=he;
jieguohe=zong;
end
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询