python - 有没有办法可以使用动态编程来表示这个循环
问题描述
我有一个循环条件,它的时间复杂度为 O(N^2),我想使用动态编程执行相同的计算。我已经采取了以下步骤来实现这一目标,但我在某个时候遇到了困难,我真的不知道到底该怎么做才能得到想要的结果。
credits_count = Counter(credits)
recurring_credits = [credit for credit in credits_count.keys() if credits_count[credit] > 1 and credit >= 1000]
non_rec_group = len(recurring_credits)
credit_group = []
per = 5/100
for i in range(len(credits)):
found_group = False
for j in range(len(recurring_credits)):
low_range = recurring_credits[j] - (per*recurring_credits[j])
high_range = recurring_credits[j] + (per*recurring_credits[j])
if credits[i] >= low_range and credits[i] <= high_range:
found_group = True
credit_group.append(j)
break
if not found_group:
credit_group.append(non_rec_group)
non_rec_group += 1
credits = [4.0, 13155.62, 160929.27, 43580.43, 115000.0, 100.0, 5.0, 4.0, 2220.09, 160229.27, 55055.42, 8.0, 115.0, 5.75, 100000.0, 5060.85, 51675.2, 160929.27, 8.0, 100000.0, 200.0, 10.0, 9141.07, 160929.27, 48094.73, 8.0, 100000.0, 12721.54, 8.0, 44014.51, 258784.72, 200000.0, 100.0, 5.0, 14552.21, 42183.84, 140542.72, 200.0, 10.0, 8.0, 95000.0]
上述循环的输出是:
print(credit_group)
[2, 3, 0, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 1, 14, 15, 0, 16, 1, 17, 18, 19, 0, 20, 21, 1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 1]
动态部分:
n1, n2 = len(credits), len(recurring_credits)
results = [0 for _ in range(n2-1) for _ in range(n1-1)]
for i in range(len(credits)):
# found_group = False
for j in range(len(recurring_credits)):
if credits[i] == recurring_credits[j]:
low_range = recurring_credits[j] - (per*recurring_credits[j])
high_range = recurring_credits[j] + (per*recurring_credits[j])
if credits[i] >= low_range and credits[i] <= high_range:
results[i] = 1+results[i]
else:
results[i] = 1+results[non_rec_group]
解决方案
推荐阅读
- javascript - JS 使用 onSuccess() 语法
- react-native - 纯 react native 比 expo 有什么好处?
- angular - [ngModel] 和 (ngModelChange) 如何协同工作?
- c# - Asp.net Core MVC - 在应用程序关闭期间获取依赖项
- testing - 云版的进度报告(公共预览版)功能什么时候发布?
- python - 如何在 Python fstring 中使用变量,同时包含不转义下一个字符的反斜杠
- durandal - 绑定生命周期要求删除导航到任何路线的视图:Durandal
- python - 尝试获取总和时的 For-Loop Index KeyError
- java - 更改壁纸有时有效,有时不会导致黑屏
- android - 检查屏幕上的像素颜色