请教MATLAB的高手

来源:百度知道 编辑:UC知道 时间:2024/06/30 03:38:19
请教MATLAB的高手
悬赏分:30 - 解决时间:2008-7-1 22:10
题目是:(给定值是80) 从1到33里任意选择6个数字相加等于80(不重复)
这些数据满足的条件是:在这6任意的数中至少有两个数是相差1,即两个数是连续的(注意此题是数的比较,不是个位数和十位数的比较) 还有在6个数字里要有2个数字的个位数是相同的.
以下的例子都是满足条件的
3 7 10 11 18 31(10和11相差1)(11和31个位数是相同的)
2 3 6 19 21 29(2和3相差1) (19和29个位数是相同的)
请问怎么解决?最好给出完整的代码.
先谢谢啦!

这个跟matlab关系不大吧,关键是自己要知道算法。
matlab只是工具而已。

我编的程序如下:
clear
A=ceil(rand(1000000,6)*33);
C=[];
m=0;n=0;
for i=1:1000000
if (sum(A(i,:))==80)
m=m+1;
B(m,:)=A(i,:);
end
end

b=m;
for i=1:m
for j=1:5
for k=(j+1):6
if B(i,k)==B(i,j)
b=b-1;
B(i,:)=[];
end
end
end
end %先复制到这里输入command window

for i=1:b
for j=1:5
for k=(j+1):6
for a=(j+1):6
if ((rem((B(i,a)-B(i,j)),10))==0)&&(abs(B(i,k)-B(i,j))==1)
n=n+1;
C(n,:)=B(i,:);
end
end
end
end
end
D=C(1,:)
要是一起输入就没有结果,但这样就有了,你看看啊,再改一下