結果

問題 No.1916 Making Palindrome on Gird
ユーザー kozykozy
提出日時 2022-04-30 01:33:01
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 349 ms / 3,000 ms
コード長 941 bytes
コンパイル時間 173 ms
コンパイル使用メモリ 82,016 KB
実行使用メモリ 142,784 KB
最終ジャッジ日時 2024-06-29 07:31:44
合計ジャッジ時間 7,183 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 35 ms
51,968 KB
testcase_01 AC 35 ms
52,096 KB
testcase_02 AC 46 ms
62,848 KB
testcase_03 AC 32 ms
52,352 KB
testcase_04 AC 38 ms
59,264 KB
testcase_05 AC 38 ms
59,392 KB
testcase_06 AC 37 ms
59,008 KB
testcase_07 AC 37 ms
59,008 KB
testcase_08 AC 39 ms
59,520 KB
testcase_09 AC 44 ms
71,040 KB
testcase_10 AC 32 ms
52,096 KB
testcase_11 AC 41 ms
60,416 KB
testcase_12 AC 33 ms
52,224 KB
testcase_13 AC 154 ms
102,500 KB
testcase_14 AC 114 ms
91,392 KB
testcase_15 AC 180 ms
107,280 KB
testcase_16 AC 165 ms
103,920 KB
testcase_17 AC 288 ms
135,140 KB
testcase_18 AC 320 ms
142,436 KB
testcase_19 AC 319 ms
142,288 KB
testcase_20 AC 324 ms
142,592 KB
testcase_21 AC 328 ms
142,244 KB
testcase_22 AC 349 ms
142,592 KB
testcase_23 AC 290 ms
141,056 KB
testcase_24 AC 286 ms
141,228 KB
testcase_25 AC 288 ms
140,800 KB
testcase_26 AC 292 ms
142,432 KB
testcase_27 AC 265 ms
141,156 KB
testcase_28 AC 346 ms
142,784 KB
testcase_29 AC 327 ms
142,336 KB
testcase_30 AC 317 ms
142,208 KB
testcase_31 AC 314 ms
142,764 KB
testcase_32 AC 310 ms
142,336 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