【求助!!】求助oj18071成环问题

34 views
Skip to first unread message

韦霄娜

unread,
Dec 27, 2018, 11:31:44 AM12/27/18
to cs101pku
附上自己的代码。。

m,n=map(int,input().split())
c=[['0']*(n+2)]
for i in range(m):
    s=input().split()
    s.insert(0,'0')
    s.extend('0')
    c.append(s)
c.append(['0']*(n+2))

for i in range(1,m+1):
    for j in range(1,n+1):
       
        if c[i][j]=='1':
            if [c[i][j+1],c[i][j-1],c[i-1][j],c[i+1][j]].count('1')<2:
                c[i][j]='0'

b=sum(c[k].count('1') for k in range(1,1+m))

print(['YES','NO'][b==0])

感觉自己在这种搜索问题上一直很弱。。oj上的题目也练不明白。。求大家提供一些这类题目来练练手555

钟睿琦

unread,
Dec 27, 2018, 11:42:26 AM12/27/18
to cs10...@googlegroups.com, cs101pku
因为循环只过一遍,所以有可能之前1周围有2个以上的1,但后来它周围的因为不符合要求被换成0了,从而它也不再满足要求,应该也换成0。我用的while 然后用一个sum来计数,如果在一次循环中没有1再被换成0,就证明全部换完了,这时候跳出while,再算b


--
您收到此邮件是因为您订阅了Google网上论坛上的“cs101pku”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到cs101pku+u...@googlegroups.com
要发帖到此群组,请发送电子邮件至cs10...@googlegroups.com
访问此群组:https://groups.google.com/group/cs101pku
要查看更多选项,请访问https://groups.google.com/d/optout

钟睿琦

unread,
Dec 27, 2018, 11:53:49 AM12/27/18
to cs10...@googlegroups.com, cs101pku
哦哦还有一个b>=4的验证条件,不是0

韦霄娜

unread,
Dec 27, 2018, 12:51:33 PM12/27/18
to cs101pku
我成功啦!感谢!
不过用的还是b==0的条件,如果最终不能成链,循环到最后b一定是0,不过思路都一样,b>=4应该是从可以成链的角度思考。
再次感谢!

在 2018年12月28日星期五 UTC+8上午12:53:49,钟睿琦写道:
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到cs101pku+unsubscribe@googlegroups.com
Message has been deleted

Apollo liu

unread,
Jan 7, 2019, 3:32:09 AM1/7/19
to cs101pku
还是没懂题意,你通过的代码能否分享一下呢

在 2018年12月28日星期五 UTC+8上午1:51:33,韦霄娜写道:
在 2018年12月28日星期五 UTC+8上午1:51:33,韦霄娜写道:
在 2018年12月28日星期五 UTC+8上午1:51:33,韦霄娜写道:
在 2018年12月28日星期五 UTC+8上午1:51:33,韦霄娜写道:
在 2018年12月28日星期五 UTC+8上午1:51:33,韦霄娜写道:
在 2018年12月28日星期五 UTC+8上午1:51:33,韦霄娜写道:
Reply all
Reply to author
Forward
0 new messages