您好 可以幫我看看這個題目 用我的寫法寫的問題在哪嗎
已經琢磨好久了但沒有找到問題…
感謝你
n,m,num=map(int,input().split())
kingList=[]
for i in range(num):
king=list(map(int,input().split()))
king.append(int(0))
kingList.append(king)
space=[[0]*m for i in range(n)]
#print(space)
#有國王過去+1
#有炸彈+1
#大於2爆炸(to 0)
#無事0
boomed=0
count=0
#初始位置有國王
for k in range(num):
a=kingList[k][0]
b=kingList[k][1]
#print(a,b)
space[a][b]=1
#重複移動直至boomed等於國王人數
while True:
#print(kingList)
#print('origin sapce',space)
boom=[]
for k in range(num):
if kingList[k][4]==1: #檢查該國王是否已被刪除
continue
a=kingList[k][0] #國王位置
b=kingList[k][1]
stepA=kingList[k][2] #國王移動方式
stepB=kingList[k][3]
#移動放炸彈
if 0<=a+stepA<n and 0<=b+stepB<m: #檢查移動後有無超出邊際
space[a+stepA][b+stepB]+=1
kingList[k][0]=a+stepA #移動國王
kingList[k][1]=b+stepB
#print(kingList[k])
else:
#print(k,"有超出邊際")
boomed+=1
kingList[k][4]=1
#判斷移動後是否boom
for i in range(n):
for j in range(m):
if space[i][j]>=2:
for k in range(num):
if kingList[k][0]==i and kingList[k][1]==j:
#print(k,"有踩到炸彈")
space[i][j]=0
boom.append(k)
#炸
#print(boom)
for b in boom:
kingList[b][4]=1
space[kingList[b][0]][kingList[b][1]]=0
#print("boomed",space)
boomed+=1
if boomed>=num:
break
#算炸彈
for i in range(n):
for j in range(m):
if space[i][j]==1:
count+=1
print(count)