#30681: 請幫忙看一下為何過不了 測資中每個步驟我都有拿拿盡量debug了但還是找不出來


u11031107 (立波器)

學校 : 臺北市立麗山高級中學
編號 : 175270
來源 : [1.169.72.252]
最後登入時間 :
2023-10-22 20:52:04
g596. 2. 動線安排 -- 2021年11月APCS | From: [1.34.205.12] | 發表日期 : 2022-06-05 20:40

m,n,h=map(int,input().split())
temp=[]
Map=[[0]*n for i in range(m)]
biggest=0
for k in range(h):
  inf=list(map(int,input().split()))
  temp.append(inf)
  now=inf[2]
  y=inf[0]
  x=inf[1]
  if now==0:
    Map[inf[0]][inf[1]]="@"
    #right
    for j in range(inf[1]+1,n):
      t=True
      if Map[inf[0]][j]=="@":
        for i in range(inf[1]+1,j):
          if Map[inf[0]][i]=="|":
            Map[inf[0]][i]="+"
          else:
            Map[inf[0]][i]="-"
        t=False
        break
      if t==False:
        break
    #left
    for j in range(inf[1]-1,-1,-1):
      t=True
      if Map[inf[0]][j]=="@":
        for i in range(inf[1]-1,j,-1):
          if Map[inf[0]][i]=="|":
            Map[inf[0]][i]="+"
          else:
            Map[inf[0]][i]="-"
        t=False
        break
      if t==False:
        break
    #down
    for j in range(inf[0]+1,m):
      t=True
      if Map[j][inf[1]]=="@":
        for i in range(inf[0]+1,j):
          if Map[i][inf[1]]=="-":
            Map[i][inf[1]]="+"
          else:
            Map[i][inf[1]]="|"
        t=False
        break
      if t==False:
        break
    #up
    for j in range(inf[0]-1,-1,-1):
      t=True
      if Map[j][inf[1]]=="@":
        for i in range(inf[0]-1,j,-1):
          if Map[i][inf[1]]=="-":
            Map[i][inf[1]]="+"
          else:
            Map[i][inf[1]]="|"
        t=False
        break
      if t==False:
        break
  else:
    Map[inf[0]][inf[1]]=0
    #right
    for j in range(inf[1]+1,n):
      t=True
      if Map[inf[0]][j]=="@":
        for i in range(inf[1]+1,j):
          if Map[inf[0]][i]=="+":
            Map[inf[0]][i]="|"
          else:
            Map[inf[0]][i]=0
        t=False
        break
      if t==False:
        break
    #left
    for j in range(inf[1]-1,-1,-1):
      t=True
      if Map[inf[0]][j]=="@":
        for i in range(inf[1]-1,j,-1):
          if Map[inf[0]][i]=="+":
            Map[inf[0]][i]="|"
          else:
            Map[inf[0]][i]=0
        t=False
        break
      if t==False:
        break
    #down
    for j in range(inf[0]+1,m):
      t=True
      if Map[j][inf[1]]=="@":
        for i in range(inf[0]+1,j):
          if Map[i][inf[1]]=="+":
            Map[i][inf[1]]="-"
          else:
            Map[i][inf[1]]=0
        t=False
        break
      if t==False:
        break
    #up
    for j in range(inf[0]-1,-1,-1):
      t=True
      if Map[j][inf[1]]=="@":
        for i in range(inf[0]-1,j,-1):
          if Map[i][inf[1]]=="+":
            Map[i][inf[1]]="-"
          else:
            Map[i][inf[1]]=0
        t=False
        break
      if t==False:
        break
  Final=0
  for i in range(m):
    for j in range(n):
      if Map[i][j]!=0:
        Final+=1
  if Final>biggest:
    biggest=Final
  #print(Map)
print(biggest)
print(Final)
 
#31033: Re: 請幫忙看一下為何過不了 測資中每個步驟我都有拿拿盡量debug了但還是找不出來


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
g596. 2. 動線安排 -- 2021年11月APCS | From: [118.160.197.37] | 發表日期 : 2022-07-06 11:55

 
          if Map[inf[0]][i]=="|":
            Map[inf[0]][i]="+"
          else:
            Map[inf[0]][i]="-"
 


有可能這個位置原本就是"+",連線之後一樣還是"+",下、左、右也是同理。

測資範例:

3 6 5
0 1 0
2 1 0
1 0 0
1 3 0
1 2 0

 
ZeroJudge Forum