- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题是找到最大的正整数集合S,使得S的元素的平方和等于给定数n。
例如:
4 = 2²
20 = 4² + 2²
38 = 5² + 3² + 2²
300 = 11² + 8² + 7² + 6² + 4² + 3² + 2² + 1².
我有一个运行时间 O(2^(sqrt n) * n)
的算法,但它太慢了(正方形的每个子集)。
最佳答案
有一个 O(n^1.5)
时间算法基于 subset sum 的规范动态程序.这是重复的:
C(m, k) is the size of the largest subset of 1..k whose squares sum to m
C(m, k), m < 0 = -infinity (infeasible)
C(0, k) = 0
C(m, 0), m > 0 = -infinity (infeasible)
C(m, k), m > 0, k > 0 = max(C(m, k-1), C(m - k^2, k-1) + 1)
为 0..n
中的所有 m
和所有 k
计算 C(m, k)
0..floor(n^0.5)
。为目标值返回 C(n, floor(n^0.5))
。要恢复集合,请追溯 argmax。
关于algorithm - 将自然数表示为不同平方和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222693/
我不知道引用引用的对象的值如何。顺便说一句,我不是在谈论整数。 我想做这个方法。 swapNN(NaturalNumber j, NaturalNumber n) 我希望交换 j 和 n 的引用,但是
给定一个向量 v w [1] -2 -1 0 1 2 3 4 7 8 9 10 11 12 13 19 20 21 22 23 24 25 最佳答案 另一种方法是 c(t(sapp
给定前 n 个自然数的 k 组合,出于某种原因,我需要在 itertools 返回的那些组合中找到这种组合的位置。 combination(range(1,n),k)(原因是这样我可以使用 list
在根据代码摘录识别复杂性或最坏情况时,我了解什么是大 O 表示法。 在类里面,我被教导说,当谈到复杂性和大 O 表示法时,我们忽略低于 M 的小参数 n 和常数因子 C 。 这是在类里面给我的: In
我需要编写一个算法来解决这个练习,有什么建议吗? 练习: 我们有一个矩形,分成 n x m 个正方形,每个正方形都是自然数。编写一个函数来计算这个矩形内有多少个幻方。 幻方是 k x k (k>=2)
我是一名优秀的程序员,十分优秀!