String &引用;合并“;算法名称/实现
不太清楚如何描述这个,但我有一个我喜欢玩的文字游戏,我想作为一个计算机程序来实现 基本要点是查看字母(A=1..Z=26)的值,并将字母合并到尽可能少且彼此最接近的位置 例如:String &引用;合并“;算法名称/实现,string,algorithm,String,Algorithm,不太清楚如何描述这个,但我有一个我喜欢玩的文字游戏,我想作为一个计算机程序来实现 基本要点是查看字母(A=1..Z=26)的值,并将字母合并到尽可能少且彼此最接近的位置 例如: s t a c k 求和 19 + 20 + 1 + 3 + 11 = 54 查找最少的字母数: ceil(54/26) = 3 选择彼此最接近的字母 54/3 = 18 要显示的字母应为rrr 这恰好是一个简单的例子。当您需要,比如说,rrs(如果您的初始字符串是“一个堆栈”),它会是什么样子 这已经有一个我可
s t a c k
求和
19 + 20 + 1 + 3 + 11 = 54
查找最少的字母数:
ceil(54/26) = 3
选择彼此最接近的字母
54/3 = 18
要显示的字母应为rrr
这恰好是一个简单的例子。当您需要,比如说,rrs
(如果您的初始字符串是“一个堆栈”),它会是什么样子
这已经有一个我可以查找和实现的名称了吗?我想你的问题可以归结为:给定
n
和k
,查找数字r1
,r2
,…,rk
,这样和(r1+r2+…+rk)=n
和max(r1,r2,…,rk)-min(r1,r2,…,rk)
尽可能小
解决方案是选择r=floor(n/k)
,并将n mod k
的数字设置为r+1
,其余的r
例如,如果n=55
和k=3
(您的示例),我们有floor(55/3)=18
,而55 mod 3
是1
,因此解决方案是19,18,18
剩下的就是在数字和字母之间转换。我认为你的问题归结为:给定
n
和k
,找到数字r1
,r2
,…,rk
,这样和(r1+r2+…+rk)=n
和max(r1,r2,…,rk)-min(r1,r2,…,rk)
尽可能小
解决方案是选择r=floor(n/k)
,并将n mod k
的数字设置为r+1
,其余的r
例如,如果n=55
和k=3
(您的示例),我们有floor(55/3)=18
,而55 mod 3
是1
,因此解决方案是19,18,18
剩下的就是数字和字母之间的转换。还没有编码出来,但是想要验证它还会给出一个压缩列表,比如
ssttt
(如果总数是98)还没有编码出来,但是想要验证它还会给出一个压缩列表,比如ssttt
(如果总数是98)