|
写了一个程序,可以参考一下[第一次寻找最小值时用了min,只取第一个min值,考虑到重复情况,可以用find代替min]:
clc
clear
x=[12,34,56,3,4,15,67,90,34,23,78,44,87,32,5,67,33];
% 寻找小于50的元素集合
x=sort(x);
for i=1:length(x)
if x(i)>50
break;
end
end
x1=x(1:i-1);
% 寻找各种情况下的组合最小值
index=zeros(2,length(x1));
for i=1:length(x1)
s=nchoosek(x1,i);
[m,ind]=min((abs(sum(s,2)-50)));
index(1,i)=ind;
index(2,i)=m;
end
% 求各种情况下的组合最小值的最小值
ind=find((index(2,:)-min(index(2,:)))==0);
for i=1:length(ind)
s=nchoosek(x1,ind(i));
disp(s(index(1,ind(i)),:))
end
%%%%%%%%%%%%
3 15 32
3 4 5 15 23
[ 本帖最后由 friendchj 于 2009-8-10 18:36 编辑 ] |
评分
-
1
查看全部评分
-
|