本帖最后由 为你奋斗 于 2009-12-3 14:20 编辑
flag=0; while flag==0; for k=1:568 R=inf; while sum(R)~=1 R=round(rand(1,40)); end N(:,k)=R'; end flag=1; for i=1:40 for j=1:568 s1(i)=s1(i)+N(i,j); end end for i=1:40 if s1(i)<4|s1(i)>30 flag=0; end end end %...... %...... while flag==3 s=zeros(1,32);j=1; flag=0; while flag==0; for k=1:568 R=1; while sum(R)~=4 R=round(rand(1,32)); end M(:,k)=R'; end flag=1; for i=1:32 for j=1:568 s(i)=s(i)+M(i,j); end end for i=1:32 if s(i)<66|s(i)>76 flag=0; end end end %...... %...... R=1; while sum(R)~=32 R=round(rand(1,40)); end f1=find(R); %....... for j=1:568 for i=1:40 if N(i,j)==1 p(j)=i; end end end for j=1:568 for i=1:32 if M(i,j)==1 if f1(i)==p(j) flag=3; end end end end %........ end disp(['评委的编号',blanks(6),'评委来自的学校',blanks(6),'评委查看的试卷']) for i=1:32; for j=1:568 if M(i,j)==1 disp([num2str(i),blanks(10),num2str(f1(i)),blanks(10),num2str(j)]) end end end 本MATLAB程序存在不合理性,其原理没什么错误,但存在搜索不可实现性(时间),即可行性问题。求高手指教怎么加速搜索,优化搜索。