- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以几个月前我在参加编程面试时,由于某种原因这个问题让我绊倒了。我可以想到几个解决方案,但其中大多数似乎效率极低。虽然多年来我一直以某种身份进行编程,但我目前正在大学攻读 CS 学位,所以我的引用点可能不完整。我希望这里有人可以提供一些可能的解决方案:
“给定一组字符串和相关的数字‘值’,从这些字符串中组装一个回文,其值(由用于创建它的字符串的总和定义)是可能的最高值。”
可以提供的字符串数量没有限制,有些字符串可能不会被使用。
例子:“ASD”- 3“dsa”- 5“应用程序”- 1
结果将是值为 9 的“asdappadsa”。
我的想法是尝试所有顺序的所有字符串,然后放弃一个,从最低值的开始,但该解决方案是 O(N!),我认为这不行。
(首选语言是 C 和 Java,但不管用什么)
编辑:澄清。提供的每个字符串只能使用一次,并且必须完全按照提供的方式使用,但您可以选择不使用回文中的任何字符串。您不能使用提供的字符串的子字符串,也不能反转字符串。
最佳答案
用“所有回文”替换“所有字符串”,问题空间变得更小。
将字符串分成 26 个子集。
Strings beginning with x (for 'a' <= x <= 'z')
[or whatever the set of "letters" is]
现在将它们分成另外26个子集
Strings ending with y ( for 'a' <= y <= 'z')
请注意,每个字符串都出现在“开头为”集合和“结尾为”集合中。
使用这些集合来指导创建所有可能的回文。
Start with two empty strings: prefix and suffix
for each string in the original set
assign it to the prefix
call recursiveFunction(prefix, suffix)
def recursiveFunction(prefix, suffix):
if prefix + <anything> + suffix cannot form a palindrome return
if prefix + suffix is a palindrome, remember it
while you have unused strings
if the suffix is shorter than the prefix
Look at the first unmatched character in the prefix
for each unused string that ends in that character
call recursiveFunction(prefix, string + suffix)
else if prefix is shorter than suffix
look at the last unmatched character in the suffix
for each unused string that ends with that character
call recursiveFunction(prefix + string, suffix)
else // suffix and prefix have equal lenghths
for each unused string
call recursiveFunction(prefix + string, suffix)
使用时一定要标明开头和结尾的字符串。并且一定要考虑递归对“已用”标记的影响。
然后选择得分最高的回文。
关于java - 最高 "Valued"回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641355/
我刚刚开始学习,我的一项练习需要帮助。 我需要最终用户输入每个月的降雨量。然后我需要输出平均降雨量、最高月份和最低月份以及降雨量高于平均水平的月份。 我一直在最高和最低中得到相同的数字,我不知道为什么
我试图让一排 div 都与最高的那个的高度相匹配,所以它们看起来是统一的。 我已经阅读了很多这方面的资料,但似乎找不到任何适用于跨浏览器的解决方案。 我目前使用的脚本是: var maxHei
我有一个像 [1,4,3,1,6,5,1,4,4] 的数组 这里最高元素频率是 3 ,我需要从数组中选择频率为 3 的所有元素,如上例中的 [1,4] 。 我已经尝试过这个 var count = {
我有一个学生记录列表,grades ,我想按 GPA 排序,返回前 5 个结果。由于某种原因count awk '{ if (count awk '{ if (count<=8) print $3,
我有一个用于显示博客文章的页面。在页面的开头,我使用以下 SQL 获取数据: SELECT posts.*, count(comments.post_id) as number_of_comments
我有一张 table 城市 |状态|比赛|值(value) 可以有多个相同城市/州/种族和不同值的记录。 我想创建一个新表,其中每个城市|州|种族有一条记录 与 计数(原始表中包含城市/州/种族的记录
我是一名初级 Java 程序员(例如 0 级...)。我正在做这个项目,但我已经被难住了好几天了。我可能还有很多我没有注意到的小错误。 项目是这样的: 要求用户输入从 0.00 到 100.00 的一
我已经对我的数据进行了分组。现在,我要做的是每周从“高”列中选择最高值,并从“低”列中选择最低值,然后使用最高值减去最低值得到范围。但是代码总是错误的。有人对我有想法吗? 这是我的 DataFrame
所以几个月前我在参加编程面试时,由于某种原因这个问题让我绊倒了。我可以想到几个解决方案,但其中大多数似乎效率极低。虽然多年来我一直以某种身份进行编程,但我目前正在大学攻读 CS 学位,所以我的引用点可
我已经制定了一个程序来显示给定日期的特定时间的最高和最低流行项目。该过程没有错误或异常,并且一切正常。如您所见,为了显示 Items 的第一条记录,查询重复了两次,但唯一的区别在于顺序(ASC 和 D
我正在尝试将配对的 div 设置为相同的高度。 Some text Some text Some textSome textSome textSome textSome text Som
R 提供了最大值和最小值,但除了对整个向量进行排序然后从此向量中选取值 x 之外,我没有看到一种真正快速的方法来查找顺序中的另一个值。 例如,是否有更快的方法来获取第二高值? 最佳答案 使用sort(
这是我的命令: top -b -n 1 | head -3 | tail -n 1 | awk '{ print $2 }' 我运行一个 bash 脚本来获取这些详细信息(还有平均负载和内存消耗)并将
对于这个计划,我的目标是...使用 findKth 查找最高分、最低分、中位数和平均分用户必须输入数字(输入-1以停止扫描),但他们不知道有多少个以及是否已排序但是,我在尝试执行此操作时遇到了一些问题
我正在创建这个网站: https://www.melkerhei.be/smeltkroes/index.html 左上角的标志应该是可以点击的。这是代码:
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我的 table 是这样的: name | var ---------------- Joe | 3 Liz | 1 Liz | 4 Joe | 2 Peter
我有这个: function sayHello() { return new Promise( resolve => { throw new Error('reject');
JSFiddle:Example 我正在寻找一种方法来使容器 div 的高度等于其最高的子级。 每个其他子项的大小都应调整为容器的高度。 如果子元素超出其宽度,我还需要容器水平滚动。 到目前为止,我已
我有一个大小为 208 的列表(208 个句子数组),它看起来像: all_words = [["this is a sentence ... "] , [" another one hello bo
我是一名优秀的程序员,十分优秀!