原题链接:棋盘问题
import pprint r,c=map(int,input().split()) b=[] for x in range(c): b.append(list(input())) _=input() d=[(1,0),(0,1),(-1,0),(0,-1)] node=[] vis=set() for x in range(c): for y in range(r): if b[x][y]=='@': node.append((x,y)) vis.add((x,y)) break else: continue break step=1 def bfs(): global step while node: size=len(node) for i in range(size): x=node[0][0] y=node[0][1] node.remove((x,y)) for m,n in d: if 0<=x+m<c and 0<=y+n<len(b[x+m]) and (x+m,y+n) not in vis and b[x+m][y+n]!="#": if y+n>=c: continue step+=1 node.append((x+m,y+n)) vis.add((x+m,y+n)) bfs() print(step)
最后一个样例:
16 16 ....#.......##.. ....##......##.. ....#.......#... ...##.......#... ....@.........## ..............## ##....##....##.. #...........##.. #............... .#..#.##........ ##.............. .........#..#### .................. ........#######. .#..#.##........ .#..#.## 0 0
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复