matlab z字形扫描,2014-12-2-Z字形扫描-python

主要方法:首先要弄明白Z字形扫描的规则,斜向上扫描后,要先判断是否可以右移,如果可以右移就右移;如果不可以右移,就要下移。之后再斜向下扫描。斜向下扫描后,要先判断是否可以下移,如果可以下移就下移;如果不可以下移,就右移。之后再斜向上扫描。当坐标不是最后一个坐标,就一直执行上述步骤。

程序主要思路:构造两个函数,一个用于斜向上扫描输出数据,一个用于斜向下扫描输出数据,均返回最后一个数的坐标。当坐标不是列表中最后的那个数时,就一直循环上述步骤。

注意:斜向上的扫描:从给定坐标开始,如果坐标没有到达第一行或者最后一列时,就横坐标减1,纵坐标加1。斜向下的扫描:从给定坐标开始,如果坐标没有到达第一列或者最后一行时,就横坐标加1,纵坐标减1。

n=int(input())

l=[] #存放数据

for i in range(n):

l.append(list(map(int,input().split())))

#print(l)

def Xiexiayi(i,j,l): #斜向下移动输出的数据,返回最后一个坐标

print(l[i][j],end=" ")

while(i!=n-1 and j!=0): #循环直到到达第一列或者最后一行

i+=1

j-=1

print(l[i][j],end=" ")

return [i,j] #返回循环到底的最后一个坐标,作为下一步移动的坐标点

def Xieshangyi(i,j,l): #斜向上移动输出的数据,返回最后一个坐标

print(l[i][j],end=" ")

while (i != 0 and j != n-1): #循环直到到达第一行或者最后一列

i-=1

j+=1

print(l[i][j], end=" ")

return [i, j] #返回循环到底的最后一个坐标,作为下一步移动的坐标点

i=0

j=0

print(l[i][j],end=" ") #输出第一个数

#从第一个点开始:先判断是否可以右移,可以右移就右移,之后斜向下移动;如果不可以右移就下移,之后斜向下移动;

#之后判断是否可以下移,如果可以下移就下移,之后斜向上移动;如果不可以下移就右移,之后斜向上移动

while(i!=n-1 or j!=n-1): #循环直到达到最后的那个点

if(j==n-1): #无法右移的话就下移

i+=1

else:

j+=1

[i,j]=Xiexiayi(i, j, l) #斜下移

if((i==n-1)): #无法下移就右移

j+=1

else:

i+=1

[i, j] = Xieshangyi(i, j, l) #斜上移

```![结果.png](https://upload-images.jianshu.io/upload_images/21235383-7fd6680d5ad08d0b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值