郑州大学python程序设计试题及答案_[蓝桥杯][2014年第五届真题]兰顿蚂蚁 (Python代码)...

这是一个关于使用Python实现兰顿蚂蚁问题的程序设计试题,代码中包含了详细的注释。程序通过创建蚂蚁类并模拟其在二维地图上的移动来找到最终位置,但遇到了答案错误的问题。代码经过更新,增加了异常处理,以避免无限循环。
摘要由CSDN通过智能技术生成

# python3.6实现

本地测试了几组数据都过了,不知道哪里出了错误提示**答案错误!**

看代码,**有注释**!

**具体思想:**就是把蚂蚁当作一个对象,通过更换蚂蚁的位置与头部完成运动最后输出蚂蚁的最终位置,我觉得我没做错,希望大神找一下错误!

```python

#黑-1向右90度,白-0左90度。

#map_y=[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,1,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]]

#蚂蚁

class ldmy():

def __init__(self,head,l,r):

self.head=head

self.l=l

self.r=r

def re(self):

self.l=0

self.r=0

def point(self):

P=self.head

i=self.l

j=self.r

if P=='L':

if map_y[i][j]==1:

yi_1.l=i-1

yi_1.head='U'

else :

yi_1.l=i+1

yi_1.head='D'

if P=='U':

if map_y[i][j]==1:

yi_1.r=j+1

yi_1.head='R'

else :

yi_1.r=j-1

yi_1.head='L'

if P=='R':

if map_y[i][j]==1:

yi_1.l=i+1

yi_1.head='D'

else :

yi_1.l=i-1

yi_1.head='U'

if P=='D':

if map_y[i][j]==1:

yi_1.r=j-1

yi_1.head='L'

else :

yi_1.r=j+1

yi_1.head='R'

a,b=map(int,input().split())#数组大小

map_y=[[0]*b]*a

#输入数组

for i in range(0,a):

map_y[i]=input().split(' ')

map_y[i]=[int(j) for j in map_y[i]]#变整形

#蚂蚁初始位置

a,b,str,x=input().split(' ')

a=int(a)

b=int(b)

x=int(x)

yi_1=ldmy(str,a,b)

#运动

while(x!=0):

x=x-1

i=yi_1.l

j=yi_1.r

yi_1.point()

if map_y[i][j]==0:

map_y[i][j]=1

else:

map_y[i][j]=0

#最终位置

print(yi_1.l,yi_1.r)

```

##第一次更新

class ldmy():

def __init__(self,head,l,r):

self.head=head

self.l=l

self.r=r

def point(self):

P=self.head

i=self.l

j=self.r

if P=='L':

if map_y[i][j]==1:

yi_1.l=i-1

yi_1.head='U'

else :

yi_1.l=i+1

yi_1.head='D'

if P=='U':

if map_y[i][j]==1:

yi_1.r=j+1

yi_1.head='R'

else :

yi_1.r=j-1

yi_1.head='L'

if P=='R':

if map_y[i][j]==1:

yi_1.l=i+1

yi_1.head='D'

else :

yi_1.l=i-1

yi_1.head='U'

if P=='D':

if map_y[i][j]==1:

yi_1.r=j-1

yi_1.head='L'

else :

yi_1.r=j+1

yi_1.head='R'

a,b=map(int,input().split())

map_y=[[0]*b]*a

for i in range(0,a):

map_y[i]=input().split(' ')

map_y[i]=[int(j) for j in map_y[i]]

l,r,s,x=input().split(' ')

l=int(l)

r=int(r)

x=int(x)

yi_1=ldmy(s,l,r)

#运动

try:

while(x!=0):

x=x-1

i=yi_1.l

j=yi_1.r

yi_1.point()

if map_y[i][j]==0:

map_y[i][j]=1

else:

map_y[i][j]=0

except :

x=0

print(yi_1.l,yi_1.r)

0.0分

1 人评分

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值