前言:本文原发表在新浪博客http://blog.sina.com.cn/s/blog_b27f71160101h5hb.html,现新浪博客将其搬家至CSDN,原新浪博客停止更新。
①申请搬家后,迟迟未能收到申请搬家的码
②再熟悉一下算法
③联系键盘打字
基于以上三点,遂将博文重新敲一遍。
约瑟夫置乱加密
如果看了前两篇博客的朋友都会知道这个思路,如果没有看,那么请先看这里:
%--------------------------------------------------------------------------
function v=joseph_traverse(picture,start,space)
t=picture;
[a,b]=size(t);
t=reshape(t',1,a*b);
value=a*b;
m=zeros(1,value);%存储标记序列
e=zeros(1,value);%存储置乱序列
cnt1=0;%用于记录下标
cnt2=0;%用于记录距离
flag=1;
while flag==1
start=mod(start,value);
if start==0%下标越界处理
start=value;
end
while cnt2~=space
%跳过标记区
while m(1,start)==1
start=start+1;
start=mod(start,value);
if start==0
start=value;
end
end
cnt2=cnt2+1;
start=start+1;
start=mod(start,value);
if start==0
start=value;
end
end
start=mod(start-1+value,value);
if start==0
start=value;
end
cnt2=0;%清除距离,一遍下一次遍历计数
cnt1=cnt1+1;
m(1,start)=1;%已遍历过该点,标记防止重复遍历
e(1,cnt1)=t(1,start);
%遍历结束
if cnt1==value
flag=0;
end
end
v=reshape(e,a,b);
v=uint8(v);
%完原文地址:http://blog.csdn.net/hujingshuang/article/details/45718257