孩子们,我遇到了比操控飞机还难的难题,虽然这题简单,但我还是报错了。
经典的问题:样例都过,测试却没完全过,出现了答案错误和段错误。
测试样例:
9 6
Sqbxxx
qxbxbx
xxxbxq
bbbxxb
xbqxxx
bbbqxq
qbbxxq
xqbbxx
xxqqxq
答案应该是16,但输出结果却是15
而且有段错误的情况。
快帮帮牢大,他不想被这种题肘击。
请在此输入您的代码
n,m=map(int,input().split()) area=[] i,j,tmp=0,0,False for _ in range(n): area.append(list(input())) for x in range(n): for y in range(m): if area[x][y]=="S": i,j=x,y area[i][j]="x" tmp=True break if tmp: break
cnt_bean=[0] choise=[ lambda i,j:(i-1,j+2), lambda i,j:(i+1,j+2), lambda i,j:(i-2,j+1), lambda i,j:(i+2,j+1), lambda i,j:(i-1,j-2), lambda i,j:(i+1,j-2), lambda i,j:(i-2,j-1), lambda i,j:(i+2,j-1) ]
def S_choise(area,choise,cnt_bean,i,j): for f in choise: next_i,next_j=f(i,j) if (next_i<0 or next_i>n-1 or next_j<0 or next_j>m-1) or area[next_i][next_j]=="x": continue else: i,j=next_i,next_j if area[i][j]=="b": cnt_bean[0]+=1 area[i][j]="x" S_choise(area,choise,cnt_bean,i,j) else: area[i][j]="x" S_choise(area,choise,cnt_bean,i,j) return cnt_bean[0]
print(S_choise(area,choise,cnt_bean,i,j))