有没有做了今天上午的阿里笔试题的大佬指导一下
给定一个n,m,其中n为数组中元素的个数,m为限定值,再给了一个数组,从数组中挑选一个子序列,和对m取余最大,想的是用动态规划,但是一直都只是通过15%,不知道什么原因:
n,m=map(int,input().split()) a=list(map(int,input().split())) temlist=[0 for i in range(n+1)] temlist[0]=0 for i in range(n): temmax=max(temlist[i],(temlist[i]+a[i])%m) for j in temlist[:i]: if i+1!=n and temmax>j+a[i+1]: continue elif i+1!=n and temmax<j+a[i+1] and j+a[i+1]<m: temmax=j+a[i+1] else: break temlist[i+1]=temmax #print(temlist) print(temlist[-1])