小红拿到了一个数组,她想取一些数使得取的数之和尽可能大,但要求这个和必须是 的倍数。 你能帮帮她吗?
区块链毕设网qklbishe.com为您提供问题的解答
小红拿到了一个数组,她想取一些数使得取的数之和尽可能大,但要求这个和必须是 的倍数。
你能帮帮她吗?
import sys # 输入 line = sys.stdin.readline().strip() n, k = map(int,line.split()) line = sys.stdin.readline().strip() arr = list(map(int,line.split())) # 初始化数组,只需维护两个数组 alpha = [arr[0] if arr[0]%k == i else -float('inf') for i in range(k)] alpha[0] = 0 beta = [0 for _ in range(k)] # 动态规划 for i in range(1,n): r = arr[i]%k for j in range(k): beta[j] = max([alpha[j],arr[i]+alpha[j-r]]) alpha[:] = beta[:] # 打印结果 print(-1 if alpha[0]==0 else alpha[0])
01:40
以上就是关于问题小红拿到了一个数组,她想取一些数使得取的数之和尽可能大,但要求这个和必须是 的倍数。
你能帮帮她吗?的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训