【MATLAB编程实例练习】 | 您所在的位置:网站首页 › matlab排列组合算法 › 【MATLAB编程实例练习】 |
题目: 有两个数组a1=[1 2 3 4],a2=[5 6],想要生成一个新数组b(元素个数为奇数),其中奇数元素从a2中选取,偶数元素从a1中选取,当a2中元素选取完后就停止选取,以这种方式生成所有可能的排列组合,得到数组b。 思路: 结束条件为:生成数组b的大小已经达到要求,需要一个if判断; 选择方法为:按题目要求偶数元素从a1中选取,奇数元素从a2中选取,因此需要一个if判断来决定当前需要生成的数是位于b的奇数位还是偶数位; 生成条件为:无论从a1中选取元素还是从a2中选取元素,所选取的元素不能和已生成的b中元素重复。因此需要一个for循环比较当前元素b(cur)与b(1)~b(cur-1)是否重复。主函数: clear all clc global b plan n L1 L2 a1 a2 a1 = [1 2 3 4]; a2 = [5 6]; b = []; plan = []; L1 = length(a1); L2 = length(a2); n = L2+1; find_combination(1);调用函数: function find_combination(cur) global b plan n L1 L2 a1 a2 if cur == n+1 plan = [plan;b];%plan存储最终的方案 else if mod(cur,2)%奇数 for i=1:L2 |
CopyRight 2018-2019 实验室设备网 版权所有 |