結果

問題 No.1916 Making Palindrome on Gird
ユーザー kozykozy
提出日時 2022-04-30 01:33:01
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 374 ms / 3,000 ms
コード長 941 bytes
コンパイル時間 309 ms
コンパイル使用メモリ 86,880 KB
実行使用メモリ 143,640 KB
最終ジャッジ日時 2023-09-11 17:29:18
合計ジャッジ時間 9,349 ms
ジャッジサーバーID
(参考情報)
judge13 / judge12
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 71 ms
71,180 KB
testcase_01 AC 69 ms
70,976 KB
testcase_02 AC 83 ms
75,772 KB
testcase_03 AC 69 ms
71,320 KB
testcase_04 AC 80 ms
75,488 KB
testcase_05 AC 75 ms
75,532 KB
testcase_06 AC 77 ms
75,648 KB
testcase_07 AC 77 ms
75,480 KB
testcase_08 AC 77 ms
75,448 KB
testcase_09 AC 80 ms
76,116 KB
testcase_10 AC 70 ms
71,156 KB
testcase_11 AC 78 ms
75,572 KB
testcase_12 AC 72 ms
71,184 KB
testcase_13 AC 189 ms
103,224 KB
testcase_14 AC 149 ms
92,868 KB
testcase_15 AC 226 ms
108,428 KB
testcase_16 AC 198 ms
104,636 KB
testcase_17 AC 320 ms
135,636 KB
testcase_18 AC 366 ms
143,268 KB
testcase_19 AC 371 ms
143,216 KB
testcase_20 AC 373 ms
143,204 KB
testcase_21 AC 374 ms
143,180 KB
testcase_22 AC 373 ms
143,260 KB
testcase_23 AC 317 ms
141,940 KB
testcase_24 AC 307 ms
141,868 KB
testcase_25 AC 311 ms
141,968 KB
testcase_26 AC 328 ms
142,996 KB
testcase_27 AC 284 ms
142,164 KB
testcase_28 AC 355 ms
143,532 KB
testcase_29 AC 358 ms
143,640 KB
testcase_30 AC 359 ms
143,620 KB
testcase_31 AC 356 ms
143,452 KB
testcase_32 AC 361 ms
143,436 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

def main():
  H,W=map(int,input().split())
  L=list()
  for i in range(H):
    S=input()
    L.append(S)
  mod=10**9+7
  dp=dict()
  M=((H+W)//2)
  dp=[[[0]*M for i in range(M)] for j in range(M)]
  for k in range(M-1,-1,-1):
    #k:距離
    for i in range(k+1):
      for j in range(k+1):
        a=i
        b=k-i
        c=H-1-j
        d=W-1-(k-j)
        if 0<=a<H and 0<=b<W and 0<=c<H and 0<=d<W:
          if L[a][b]==L[c][d]:
            if not (a<=c and b<=d):
              continue
            if k==M-1:
              dp[i][j][k]=1
              continue
            else:
              if a!=H-1:
                if j!=H:
                  dp[i][j][k]+=dp[a+1][j+1][k+1]
                dp[i][j][k]+=dp[a+1][j][k+1]
              if j!=H:
                dp[i][j][k]+=dp[a][j+1][k+1]
              dp[i][j][k]+=dp[a][j][k+1]
              dp[i][j][k]%=mod
          else:
            dp[i][j][k]=0
  print(dp[0][0][0])
main()
0