不太清楚如何描述这个,但是我有一个我喜欢玩的文字游戏,我想作为一个计算机程序来实现。
基本的要点是,你看字母的值(A=1..Z=26),然后把字母合并成尽可能少的,并且是彼此最接近的。
例如:

s t a c k

求和
19 + 20 + 1 + 3 + 11 = 54

查找最少的字母数:
ceil(54/26) = 3

选择最接近的字母
54/3 = 18

要显示的字母应该rrr
这恰好是一个简单的例子。当你需要,比如说,rrs(如果你的初始字符串是一个堆栈)时会是什么样子?
这已经有一个我可以查找和实现的名称了吗?

最佳答案

我认为你的问题可以归结为:给定nk,找到数字r1r2,…,rk,这样sum(r1 + r2 + ... + rk) = nmax(r1, r2, ..., rk) - min(r1, r2, ..., rk)就越小越好。
解决方案是pickr = floor(n / k),并将n mod k的数字设置为r + 1,其余的设置为r
例如,如果n = 55k = 3(您的示例),我们有floor(55/3) = 18并且55 mod 31,因此解决方案是19, 18, 18
剩下的就是数字和字母之间的转换。

关于string - “合并”算法名称/实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8422961/

10-11 20:25