天下大平 发表于 2015-6-29 14:13 
谢谢,回家我在电脑上运行下。
额,程序第一个条件还不太对,现修改如下:
clear
clc
x=combntns(1:8,4);%从1-8中选出4个的全部组合
[l1,l2]=size(x);
t=1;
for i=1:l1
flat=0;
find(x(i,:)==1)
if ~isempty(find(x(i,:)==1, 1)) || ~isempty(find(x(i,:)==3, 1)) || ~isempty(find(x(i,:)==5, 1))|| ~isempty(find(x(i,:)==7, 1)) %第一个条件
flat=1;
%第二个条件
if x(i,1)==1 && x(i,l2)==8 %不含(1,8)
flat=0;
end
for j=1:l2-1 %不含(2,5)
if x(i,j)==2
for k=j+1:l2
if x(i,k)==5
flat=0;
break;
end
end
end
if flat==0
break;
end
end
for j=1:l2-1 %不含(3,5)
if x(i,j)==3
for k=j+1:l2
if x(i,k)==5
flat=0;
break;
end
end
end
if flat==0
break;
end
end
for j=1:l2-1 %不含(4,7)
if x(i,j)==4
for k=j+1:l2
if x(i,k)==7
flat=0;
break;
end
end
end
if flat==0
break;
end
end
end
if flat==1 %满足条件1,2的组合
y(t,:)=x(i,:);
t=t+1;
end
end
%结果输出
y
最终结果(19组):
1 2 3 4
1 2 3 6
1 2 3 7
1 2 4 6
1 2 6 7
1 3 4 6
1 3 6 7
1 4 5 6
1 5 6 7
2 3 4 6
2 3 4 8
2 3 6 7
2 3 6 8
2 3 7 8
2 6 7 8
3 4 6 8
3 6 7 8
4 5 6 8
5 6 7 8