扫雷
题目描述
大家都玩过扫雷游戏吧,给定一个矩形方正区域,里面有若干个地雷,用鼠标点击,点击后如果出现一块区域,那么说明这个点周围8个方向没有地雷,如果出现数字,数字是几,那么就表示这个区域周围8个方向有几颗地雷,如果是地雷,那你很不幸就输掉了。 现在告诉你这个图里地雷的分布,你来给出每个点上面的数字应该是多少?
输入 数据的第一行有2个整数n, m(1 <= n, m <= 50),表示一个n * m的区域,n行m列,接下来n行每行有一个长度为m的字符串,字符串只包含2种字母,”.”和”X”,其中”.”表示这个地方不是地雷,”X”表示这个地方是地雷。
输出 请输出n行内容,每一行是一个长度为m的字符串,由数字和符号”X”组成,如果这个点不是地雷,那么就表示这个点周围有几颗地雷,否则这个点存放符号”X”,表示这个点是地雷。
样例 输入样例 1
3 5 ..... ..XX. ..... 输出样例 1
01221 01XX1 01221
代码实现

扫雷
题目描述
大家都玩过扫雷游戏吧,给定一个矩形方正区域,里面有若干个地雷,用鼠标点击,点击后如果出现一块区域,那么说明这个点周围8个方向没有地雷,如果出现数字,数字是几,那么就表示这个区域周围8个方向有几颗地雷,如果是地雷,那你很不幸就输掉了。 现在告诉你这个图里地雷的分布,你来给出每个点上面的数字应该是多少?
输入 数据的第一行有2个整数n, m(1 <= n, m <= 50),表示一个n * m的区域,n行m列,接下来n行每行有一个长度为m的字符串,字符串只包含2种字母,”.”和”X”,其中”.”表示这个地方不是地雷,”X”表示这个地方是地雷。
输出 请输出n行内容,每一行是一个长度为m的字符串,由数字和符号”X”组成,如果这个点不是地雷,那么就表示这个点周围有几颗地雷,否则这个点存放符号”X”,表示这个点是地雷。
样例 输入样例 1
3 5 ..... ..XX. ..... 输出样例 1
01221 01XX1 01221
代码实现
def myList(m): #输入列表:获取输入的符号 ls=[] print('请依次输入每行的地图:') for j in range(m): s=input() ll=[] for i in s: ll.append(i) ls.append(ll) return ls def result(ls): #初始状态应该对应输入列表,除了对应的位置值为X ,其它的位置初始值均为0 rs=ls for i in range(len(ls)): for j in range(len(ls[i])): if ls[i][j]=='X': rs[i][j]='X' else: rs[i][j]=0 return (rs) def check(m,n,ls): #通过检查输入列表中[i][j]点是否为雷,即X,来决定相邻的八个点的值是不是要加1(我是顺时针判断) for i in range(m): for j in range(n): if ls[i][j]=='X': if i-1>=0 and rs[i-1][j]!='X': # 判断上面是否有雷 rs[i-1][j]+=1 if i-1>=0 and j+1<n and rs[i-1][j+1]!='X': # 判断右上角是否有雷 rs[i-1][j+1]+=1 if j+1<n and rs[i][j+1]!='X': # 判断右边是否有雷 rs[i][j+1]+=1 if i+1<m and j+1<n and rs[i+1][j+1]!='X': # 判断右下角是否有雷 rs[i+1][j+1]+=1 if i+1<m and rs[i+1][j]!='X': # 判断下面是否有雷 rs[i+1][j]+=1 if i+1<m and j-1>=0 and rs[i+1][j-1]!='X': # 判断左下角是否有雷 rs[i+1][j-1]+=1 if j-1>=0 and rs[i][j-1]!='X': # 判断左边是否有雷 rs[i][j-1]+=1 if i-1>=0 and j-1>=0 and rs[i-1][j-1]!='X': # 判断左上角是否有雷 rs[i-1][j-1]+=1 else: continue return rs def out(rs): #将数字列表输出为二维列表 for s in rs : for ss in s: print(ss,end='') print() m,n=map(int,(input('请输入行和列:').split())) while True: if m==0 and n==0: break else: ls=myList(m) rs=result(ls) rr=check(m,n,ls) print('结果为:') out(rs) print() break