📄 remove_fourcycle.m
字号:
function S=remove_fourcycle(dv,dc,p)
% H=[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0;
% 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0;
% 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0;
% 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0;
% 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1;
% 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0;
% 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1;
% 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0;
% 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0;
% 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0;
% 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1;
% 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0;
% 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0;
% 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0;
% 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0];
%dv=3;
%dc=9;
H_origin=zeros(dv,dc);S=zeros(dv,dc);
%p=12;
flag_one=0;flag_two=0;
for i=1:dv
for j=1:dc
H_origin(i,j)=1;
Sr=S(i,j);
while (Sr<p)
H=hcreat(H_origin,p,S);
[cycle_position_all find_four]=seek_fourcycle(H,p);
%S_ij_all=ceil(cycle_position_all/p);% S循环矩阵中4环所对应的值得行和列
if isempty(cycle_position_all)
S(i,j)=Sr;
Sr=p;
else
Sr=randperm(p)-1;
flag_one=flag_one+1;
Sr=Sr(1);
S(i,j)=Sr;
end
if flag_one==p-1
S(i,j-1)=mod(S(i,j-1)+1,p);
flag_two= flag_two+1;
flag_one=0;
end
if flag_two==p-1
S(i,j-2)=mod(S(i,j-2)+1,p);
flag_two=0;
end
end
end
end
S;
% S =(p=15)
%
% 0 0 0 0 0 0 0 0 0
% 0 3 1 13 8 4 12 11 14
% 0 10 6 1 12 14 13 2 7
% S =(p=14)
%
% 0 0 0 0 0 0 0 0 0
% 0 10 6 7 12 3 4 5 11
% 0 5 2 9 10 6 8 13 3
% S =(p=12)
%
% 0 0 0 0 0 0 0 0 0
% 0 1 2 7 5 6 8 9 11
% 0 11 10 4 9 8 7 3 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -