可被n整除的最大和
我在StackOverflow上问了这个问题,但我认为这是一个更合适的地方。 这是算法概论课程中的一个问题: 您有aaa包含nnn正整数的数组a(该数组无需排序或元素唯一)。建议使用O(n)O(n)O(n)算法查找可被整除的元素的最大和nnn。 例如: a=[6,1,13,4,9,8,25],n=7a=[6,1,13,4,9,8,25],n=7a = [6, 1, 13, 4, 9, 8, 25], n = 7。答案是565656(与元件6,13,4,8,256,13,4,8,256, 13, 4, 8, 25) 这是比较容易找到它O(n2)O(n2)O(n^2)使用动态编程和存储与余最大的一笔0,1,2,...,n−10,1,2,...,n−10, 1, 2,..., n - 1。 另外,如果我们将注意力集中在元素的连续序列上,则可以通过存储部分和以n为模的总和来轻松地在O(n)O(n)O(n)时间内找到最佳的此类序列:让S [ i ] = a [ 0 ] + a [ 1 ] + ⋯ + 一个[ 我],对于每个剩余ř记住最大索引Ĵ使得小号[ Ĵ ] ≡ řnnnS[i]=a[0]+a[1]+⋯+a[i]S[i]=a[0]+a[1]+⋯+a[i]S[i]=a[0]+a[1]+\dots + …