函数程序:
function a=zigzag(n,nstart,option)a=zeros(n,n)
if(option==1)
for i=1:n*n
for j=1:n
for k=1:n
if(j+k<=n+1)
if(mod(j+k,2)==0)
s=j+k-2
a(j,k)=(1+s)*s/2+j
else
s=j+k-2
a(j,k)=(1+s)*s/2+k
end
else
if(mod(j+k-n-1,2)==0)
m=j+k-n-1
s=((n-1)+(n-m))*m/2
a(j,k)=(1+n)*n/2+s-(n-j)
else
m=j+k-n-1
s=((n-1)+(n-m))*m/2
a(j,k)=(1+n)*n/2+s-(n-k)
end
end
end
end
end
else
for i=1:n*n
for j=1:n
for k=1:n
if(j+k<=n+1)
if(mod(j+k,2)==0)
s=j+k-2
a(j,k)=(1+s)*s/2+k
else
s=j+k-2
a(j,k)=(1+s)*s/2+j
end
else
if(mod(j+k-n-1,2)~=0)
m=j+k-n-1
s=((n-1)+(n-m))*m/2
a(j,k)=(1+n)*n/2+s-(n-j)
else
m=j+k-n-1
s=((n-1)+(n-m))*m/2
a(j,k)=(1+n)*n/2+s-(n-k)
end
end
end
end
end
end
a=a+nstart-1
end
我的一个例子,主函数程序:
clcclear alln=8%n乘n
nstart=0%左上角从0开始
option=0%option=0从行开始,option=1从列开始
a=zigzag(n,nstart,option)
disp(a)
结果:
0 1 5 6 14 15 27 282 4 7 13 16 26 29 36
3 8 12 17 25 30 37 48
9 11 18 24 31 38 47 49
10 19 23 32 39 46 50 57
20 22 33 40 45 51 56 58
21 34 41 44 52 55 59 62
35 42 43 53 54 60 61 63
>>
希望帮到你!
你好!我设置了一个zigzag函数,为你解答。函数程序:
function a=zigzag(n,nstart,option)a=zeros(n,n)if(option==1) for i=1:n*n for j=1:n for k=1:n if(j+kclcclear alln=8%n乘nnstart=0%左上角从0开始option=0%option=0从行开始,option=1从列开始a=zigzag(n,nstart,option)disp(a)结果:
0 1 5 6 14 15 27 28 2 4 7 13 16 26 29 36 3 8 12 17 25 30 37 48 9 11 18 24 31 38 47 49 10 19 23 32 39 46 50 57 20 22 33 40 45 51 56 58 21 34 41 44 52 55 59 62 35 42 43 53 54 60 61 63>>希望帮到你!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)