题解 | #小红取数#

小红取数

http://www.nowcoder.com/practice/6a7b2b6c9e3a4f56b1db9f8ca08d889b

n,k=map(int,input().split())
arr=list(map(int,input().split()))
map1=[[] for _ in range(k)]
dp=[[0]*k for _ in range(n+1)]
maxi=0
for i in range(1,n+1):
    for j in range(k):
        dp[i][j]=max(dp[i-1][j],dp[i][j])
        dp[i][(dp[i-1][j]+arr[i-1])%k]=max(dp[i-1][j]+arr[i-1],dp[i][(dp[i-1][j]+arr[i-1])%k])
if dp[-1][0]:
    print(dp[-1][0])
else:
    print(-1)

按照大佬:xqxls 的思想写了一个python版本

全部评论

相关推荐

07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务