⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 updatechain.m

📁 哈密顿马步图回路问题
💻 M
字号:
function  [chain,mask,IsLoop]=updateChain(chain,mask,tmpNode)%UPDATECHAIN Summary of this function goes here%  Detailed explanation goes hereIsLoop=0;i=ceil(tmpNode(1)/size(mask,2));j=tmpNode(1)-(i-1)*size(mask,2);mask(i,j)=1;[a b]=find(chain==tmpNode(2));[c d]=find(chain==tmpNode(3));if a==c & (( b==1 & d==size(chain,2) ) | ( b==size(chain,2) & d==1 )) & (size(chain,2)==size(mask,1)*size(mask,2)-1)    chain(1,end+1)=tmpNode(1);    chain(1,end+1)=chain(1,1);    IsLoop=2;    return;endif (b>1)&(b<size(chain,2))        if chain(a,b+1)~=0            IsLoop=1;            endendif (d>1)&(d<size(chain,2))        if chain(c,d+1)~=0        IsLoop=1;            endendif (a==c)    IsLoop=1;else if isempty(a)&isempty(c)        chain(end+1,1)=tmpNode(2);            chain(end,2)=tmpNode(1);        chain(end,3)=tmpNode(3);                i=ceil(tmpNode(2)/size(mask,2));		j=tmpNode(2)-(i-1)*size(mask,2);		mask(i,j)=1;        i=ceil(tmpNode(3)/size(mask,2));		j=tmpNode(3)-(i-1)*size(mask,2);		mask(i,j)=1;    else if ~isempty(a)&~isempty(c)            if b==1 & d==1                tmp1=chain(a,:);                tmp1=rot90(tmp1);                tmp1=rot90(tmp1);                tmp2=chain(c,:);                tmp=[tmp1 tmpNode(1) tmp2];                tt=find(tmp==0);                tmp(tt)=[];                chain([a c],:)=[];                chain(end+1,1:size(tmp,2))=tmp;            else if b==1 & d~=1                    tmp1=chain(a,:);                    tmp2=chain(c,:);                    tmp=[tmp2 tmpNode(1) tmp1];                    tt=find(tmp==0);                    tmp(tt)=[];                    chain([a c],:)=[];                    chain(end+1,1:size(tmp,2))=tmp;                else if b~=1 & d==1                        tmp1=chain(a,:);                        tmp2=chain(c,:);                        tmp=[tmp1 tmpNode(1) tmp2];                        tt=find(tmp==0);                        tmp(tt)=[];                        chain([a c],:)=[];                        chain(end+1,1:size(tmp,2))=tmp;                    else if b~=1 & d~=1                                tmp1=chain(a,:);                                tmp1=rot90(tmp1);                                tmp1=rot90(tmp1);                                tmp2=chain(c,:);                                tmp=[tmp2 tmpNode(1) tmp1];                                tt=find(tmp==0);                                tmp(tt)=[];                                chain([a c],:)=[];                                chain(end+1,1:size(tmp,2))=tmp;                        end                    end                end            end         else if isempty(a)                        i=ceil(tmpNode(2)/size(mask,2));						j=tmpNode(2)-(i-1)*size(mask,2);						mask(i,j)=1;                        if d==1                                tmp1=chain(c,:);                                tmp=[tmpNode(2) tmpNode(1) tmp1];                                tt=find(tmp==0);                                tmp(tt)=[];                                chain(c,:)=[];                                chain(end+1,1:size(tmp,2))=tmp;                        else                                tmp1=chain(c,:);                                tmp=[tmp1 tmpNode(1) tmpNode(2)];                                tt=find(tmp==0);                                tmp(tt)=[];                                chain(c,:)=[];                                chain(end+1,1:size(tmp,2))=tmp;                        end              else if isempty(c)                        i=ceil(tmpNode(3)/size(mask,2));						j=tmpNode(3)-(i-1)*size(mask,2);						mask(i,j)=1;                        if b==1                                tmp1=chain(a,:);                                tmp=[tmpNode(3) tmpNode(1) tmp1];                                tt=find(tmp==0);                                tmp(tt)=[];                                chain(a,:)=[];                                chain(end+1,1:size(tmp,2))=tmp;                        else                                tmp1=chain(a,:);                                tmp=[tmp1 tmpNode(1) tmpNode(3)];                                tt=find(tmp==0);                                tmp(tt)=[];                                chain(a,:)=[];                                chain(end+1,1:size(tmp,2))=tmp;                        end                   end              end         end    endendif size(chain,2)==size(mask,1)*size(mask,2)    IsLoop=2;    end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -