マイ反復DPソリューションです:順列ランタイム分析:次のように反復DPソリューション
def permutations(string):
# let n = len(string)
N = [[] for _ in range(len(string) + 1)] # O(n)
N[0].append("")
for i in range(1, len(string) + 1): # O(n)
N[i] = [perm[:j] + string[i - 1] + perm[j:] for j in range(i) for perm in N[i - 1]] # O(???)
return N[-1]
しかし、私は上記のプログラムの実行時間を分析し、トラブルを抱えています。具体的には、行for perm in N[i - 1]
のランタイムの境界を設定します。私は再帰的解がO(n!)
であることを知っていますが、再帰的な実行時間を知らずに上記のプログラムの実行時間を見つける方法はありますか?