- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我知道这个问题之前针对不同的编程语言被问过,我尝试用 Swift 4 实现这个问题,但是一旦我提交了我的答案,我就被告知我的答案是错误的,所以这是任务;
你将从一个文件中输入一个三角形,你需要根据下面给定的规则找到数字的最大总和;
根据上述规则,下例中从上到下的数字和最大为24。
var sampleString = """
1
8 4
2 6 9
8 5 9 3
如您所见,它有几条符合非素数规则的路径; 1>8>6>9, 1>4>6>9, 1>4>9>91 + 8 + 6 + 9 = 24。如您所见,1、8、6、9 都不是质数,遍历这些数会得出最大和。
赋值字符串:
var assignmentString = """
215
193 124
117 237 442
218 935 347 235
320 804 522 417 345
229 601 723 835 133 124
248 202 277 433 207 263 257
359 464 504 528 516 716 871 182
461 441 426 656 863 560 380 171 923
381 348 573 533 447 632 387 176 975 449
223 711 445 645 245 543 931 532 937 541 444
330 131 333 928 377 733 017 778 839 168 197 197
131 171 522 137 217 224 291 413 528 520 227 229 928
223 626 034 683 839 53 627 310 713 999 629 817 410 121
924 622 911 233 325 139 721 218 253 223 107 233 230 124 233"""
我的代码:
func maxSumForTriangle(triangleString: String) {
var temporaryIndex = 0
var earlierIndex = 0
var greatSum = 0
var temporaryMaxInLine = 0
let values = triangleString.components(separatedBy: .newlines).map {
$0.components(separatedBy: .whitespaces).compactMap(Int.init)
}
print(values)
print(values.count)
for line in values {
if line.count == 1 {
greatSum += line[0]
earlierIndex = line.count - 1
} else {
for number in line.enumerated() {
if number.offset == earlierIndex || number.offset == earlierIndex + 1 {
//Check the number if its prime or not with the isPrime function we defined
if !isPrime(number.element) {
if number.element > temporaryMaxInLine {
temporaryMaxInLine = number.element
temporaryIndex = number.offset
}
}
}
}
earlierIndex = temporaryIndex
greatSum += temporaryMaxInLine
temporaryMaxInLine = 0
}
}
print(greatSum)
}
结果是 7619,但后来我意识到我的问题出在哪里;我不会检查每条可能的路径,我只是检查每行中的最高非质数并继续对其求和。
所以我需要找到一个不同的方法来解决这个问题,以便我的函数可以检查所有可能的情况并返回最高总和
我还想不通,我是否应该实现一个不同的函数来再次调用自己,以便它可以检查所有可能的路径?
抱歉,问题很长,但我也想展示我的旧实现。
最佳答案
这是一个典型的问题,可以用 “dynamic programming” 解决。 : 这个想法是计算每个开始的最大可能总和金字塔中的点。
如果我们从底行开始向上工作,事情就变得简单了:我们只需将其两个较低邻居中较大的一个添加到每个条目。最后,顶部条目是所需的最大总和。
考虑到关于非素数的附加条件,这可以实现为
var values = triangleString.components(separatedBy: .newlines).map {
$0.components(separatedBy: .whitespaces).compactMap(Int.init)
}
for row in values.indices.reversed() {
for col in values[row].indices {
if isPrime(values[row][col]) {
values[row][col] = Int.min
} else if row + 1 < values.endIndex {
values[row][col] += max(values[row+1][col], values[row+1][col+1])
}
}
}
print(values[0][0])
关于swift - 使用 Swift 4 对 NON-PRIME 数字进行三角求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50154980/
这个问题在这里已经有了答案: C - determine if a number is prime (12 个答案) 关闭 4 年前。 这是 C 程序。这是我的code在下面。我用了nano在终端。
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
和17一样,是质数,反过来,71也是质数。 我们设法得到了这段代码,但我们无法完成它。 #include main() { int i = 10, j, c, sum, b, x, d, e
好像is-prime和 .is-prime区别对待他们的论点: > is-prime('11') True > '11'.is-prime No such method 'is-prime' for
我正在尝试收集有关素数的一些统计数据,其中包括数字 (prime-1)/2 的因数分布。我知道有统一选择数的因子大小的通用公式,但我还没有看到任何关于小于一个素数的因子分布的信息。 我编写了一个程序,
BigInteger的JavaDoc让我感觉很不安全,例如下面的构造函数说: BigInteger(int bitLength, int certainty, Random rnd) Construc
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我需要将蓝牙模块连接到A-Star 32U4 Prime SV microSD,但无法使其工作。作为背景,我有一个Pololu双G2大功率电机驱动器24v18盾牌Arduino连接到它。。该项目是一个
我需要将蓝牙模块连接到A-Star 32U4 Prime SV microSD,但无法使其工作。作为背景,我有一个Pololu双G2大功率电机驱动器24v18盾牌Arduino连接到它。。该项目是一个
一 构建后的图 二 实现 package graph.prim; import java.util.Scanner; public class Prim { static final in
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我需要编写一个程序来输入一个数字并以以下形式输出其阶乘的质因数分解: 4!=(2^3)*(3^1) 5!=(2^3)*(3^1)*(5^1) 问题是我仍然不知道如何得到那个结果。 显然,括号中的每个第
我目前正在做一个项目,我需要一种有效的方法来计算素数。我使用了sieve of Eratosthenes,但是我一直在搜索,发现sieve of Atkin是一种更有效的方法。我发现很难找到对此方法的
我想找到总和为给定值的最小素数集,例如9 = 7 + 2(不是 3+3+3)。 我已经使用 sieve of eratosthens 生成了一个素数数组 我按降序遍历数组,以获得数组中小于或等于给定数
我正在学习 Real World Haskell(我在第 4 章),为了进行一些课外练习,我创建了以下程序来计算第 n 个素数。 import System.Environment isPrime p
我试图发现大数分解的复杂性。 哪一个是最佳算法,哪一个是找到数字的素因数的复杂性?假设数字的长度为n。 最佳答案 用于分解大于100个数字的整数的最知名算法是General number field
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Generating the partitions of a number Prime number sum
让我们看看我们想要找到 1 到 1000 之间的所有数字,这些数字表示为两个素数之和。例如 8 = 3+5, 24 = 13+11 现在这可以通过迭代 1 到 1000 之间的素数列表在 O(n^2)
我学会了一种叫做“线性筛”的算法https://cp-algorithms.com/algebra/prime-sieve-linear.html能够在线性时间内得到所有小于 N 的素数。 这个算法有
我正在学习 Idris,作为个人练习,我想实现一个 Primes类型,由所有素数组成。 在 idris 中是否有一种方法可以从一个类型和一个属性开始定义一个新类型,它将选择该属性为真的起始类型的所有元
我是一名优秀的程序员,十分优秀!