赞
踩
因为准备考研,于是希望平时练练手,于是去了ZOJ刷题。第一题还是比较简单的,只是需要代码规范。但是第二题着实让人头痛(当然一定是因为我太菜了。。。),后来在参考了两篇博主的解题思路后,又调试了一上午的bug,方才得出了现在的Python3代码。
可是不知道为什么在改为Python2代码后,提交会报错,说是错误答案,于是直接copy了第一篇博主的代码才提交成功了,但是鄙人觉得这个题的确锻炼了我的一些编程逻辑思维吧,所以写篇博客来做个记录,方便以后查阅复习。
#!/user/bin/python3 # -*- coding:utf-8 -*- #@Date :2018/10/11 11:50 #@Author :Syler def consider(j, k): global q #up for i in range(j-1, -1, -1): if q[i][k] == '*': return 0 if q[i][k] == 'X': break #down for i in range(j+1, len(q)): if q[i][k] == '*': return 0 if q[i][k] == 'X': break #left for i in range(k-1, -1, -1): if q[j][i] == '*': return 0 if q[j][i] == 'X': break #right for i in range(k+1, len(q)): if q[j][i] == '*': return 0 if q[j][i] == 'X': break return 1 def DFS(index, current): global maxCount global q j = index // len(q) k = index % len(q) if current >= maxCount: maxCount = current if index >= len(q) * len(q): return if q[j][k] == '.' and consider(j, k): q[j][k] = '*' DFS(index + 1, current+1) q[j][k] = '.' else: DFS(index + 1, current) num = int(input()) i = 0 q = [] maxCount = 0 current = 0 while num: string = input() q.append(list(string)) i += 1 if i == num: for j in range(num): for k in range(num): index = j * num + k DFS(index, current) print(maxCount) i = 0 q = [] maxCount = 0 current = 0 num = int(input())
参阅资料:
https://blog.csdn.net/zxy_snow/article/details/5952668
https://blog.csdn.net/rongyongfeikai2/article/details/7301408
欢迎关注微信公众号:达康的编程之旅
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。