python计算邮资
时间: 2023-11-05 22:04:34 浏览: 135
Python回溯算法解决邮资问题
python计算邮资的方法如下:
1. 首先,定义一个函数来计算最大的不可支付邮资。函数的参数是邮票的面值列表和一个目标邮资。
2. 在函数内部,使用动态规划的方法来计算最大不可支付邮资。创建一个长度为目标邮资加1的列表dp,初始值都设为False。将dp设为True,表示目标邮资为0时是可支付的。
3. 使用两层循环来更新dp列表。外层循环遍历邮票的面值列表,内层循环遍历可能的目标邮资。如果dp[j]为True,表示目标邮资j是可支付的,那么对于每个面值v,都将dp[j+v]设为True。
4. 最后,从目标邮资开始倒序遍历dp列表,找到第一个为False的值,即为最大的不可支付邮资。
下面是python代码实现:
```python
def compute_max_unpayable_postage(values, target):
dp = [False] * (target + 1)
dp[0] = True
for v in values:
for j in range(target, v - 1, -1):
if dp[j - v]:
dp[j] = True
for j in range(target, -1, -1):
if not dp[j]:
return j
values = [6, 7, 8]
target = 17
max_unpayable_postage = compute_max_unpayable_postage(values, target)
print("最大的不可支付邮资是", max_unpayable_postage, "角。")
```
阅读全文