作业帮 > 综合 > 作业

已知集合{1,2,3,4,5},在此集合中取几个元素,使它们之和小于7,用matlab实现

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/25 16:44:29
已知集合{1,2,3,4,5},在此集合中取几个元素,使它们之和小于7,用matlab实现
是要用matlab求所有满足条件的集合
MATLAB代码的实现如下:
clear all
clc
set = [1,2,3,4,5];
for i = 1 :4
subset = combntns(set,i);
sum = cumsum(subset,2);
for j = 1 :length(sum)
if sum(j,i) < 7
disp(subset(j,:));
end;
end;
end;
运行的结果如下:
1
2
3
4
5
1 2
1 3
1 4
1 5
2 3
2 4
1 2 3
很高兴为您解答~
再问: 哇真厉害非常感谢!!!!!不过结果能不能表示成数组的形式呢,因为之后我还要用结果作循环,谢谢!!
再答: 您好, 由于每个答案的维度不同(有长度为1的集合,有长度为2的集合,……)所以,当我们需要将其合并在一个矩阵里面的时候,我们必须要在空白位置中添上一个数字来占位(比如你可以加入0,NaN,或者任意的一个字符'a'来以示区分)。 下面这是新的代码(在这里我加入0来以示区别): clear all clc set = [1, 2, 3, 4, 5]; temp1 = []; temp2 = []; temp3 = []; for i = 1 : 4 subset = combntns(set,i); sum = cumsum(subset,2); for j = 1 : length(sum) if sum(j,i) < 7 dim = size(subset(j,:)); switch dim(2) case 1 temp = [subset(j,:), 0,0]; temp1 = [temp1;temp]; case 2 temp = [subset(j,:), 0]; temp2 = [temp2;temp]; case 3 temp = subset(j,:); temp3 = [temp3;temp]; end; end; end; end; result = [temp1; temp2; temp3]; disp(result); 很高兴为你解答~