我的思路是定义个数组arr(1 to m , 1 to 2),其中arr(i,1)用于存储数组的数,arr(i,2)用来标记数组是否被选中(选中为1,否则为0) 初始化的时候将arr(i,2),i=1,2,……n,标记为1,作为第一组组合,再遍历数组标记arr(i,2),i=1,2,……m-1,找出满足条件arr(1,2)=1 and arr(i,2)=1 and arr(i+1,2)=0时,就重新赋值arr(i+1,2)=1,arr(i,2)=0 如果遍历数组标记arr(i,2),i=1,2,……m-1,出现如下条件arr(1,2)=0 and arr(i,2)=1 and arr(i+1,2)=0时,重新赋值arr(i+1,2)=1,arr(i,2)=0,并且arr(k,2),k=1,2,……i-2,arr(k,2)=arr(k+1,2) 最后当再遍历数组arr(i,2),i=1,2,……m,如果arr(i,2)=0(i=1,2,……m-n)时,即相当于arr(i,2)=1(i= m-n+1,……m),就相当于完成了所有的组合,得到最后一个组合了 表达的不是很好,不知道大家能不能看懂,请见谅! |