タイトルの説明:
ソリューション:動的プログラミング
クラスソリューション: def numberOfArrays(self、s:str、k:int)-> int: n = len(s) dp = [0] *(n + 1 ) dp [0] = 1 mod = 10 ** 9 + 7 ための I における範囲(1、N + 1 ) のための J における範囲(I - 1、-1、-1 ): 場合、S [j] == " 0 ":続ける場合 INT(S [:I J] )<= k: dp [i] + = dp [j] その他 : もし S [I-1] == " 0 " と DP [I] == 0:リターン0 ブレーク リターン DP [-1]%モッズ
別の;
クラスソリューション: def numberOfArrays(self、s:str、k:int)-> int: n = len(s) f = [0] *(n + 1 ) f [0] = 1 m = len(str(k )) MOD = 10 ** 9 + 7 for i in range(1、n + 1 ): for j in range(1、m + 1 ): if ij> = 0: if s [ij]!= ' 0 ' および int(s [ij:i])<= k: f [i] + = f [i- j] f [i]%= MODは f [n]を返します