- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是一道来自 Topcoder SRM 566 Div2 的算法题。
问题可以查看here .
对于那些没有 topcoder 帐户的人,问题描述如下:
Penguin Pals 是一项配对服务,使用以下程序将企鹅与新 friend 配对:
上述系统的唯一问题是,如果两条线相互交叉,企鹅就会发生碰撞。因此,采用了新的附加规则:两条线不得交叉。 Penguin Pals 现在有一些企鹅排列成一个圆圈(在上述过程的第 2 步之后)。他们需要知道最多可以创造多少对企鹅。
给你一个字符串 colors ,它的第 i 个字符代表圆形排列中第 i 个企鹅(从 0 开始的索引)的首选颜色。如果第 i 个企鹅喜欢红色,第 i 个字符是“R”,如果第 i 个企鹅喜欢蓝色,则第 i 个字符是“B”。返回可以形成的最大匹配对数。
例子:
“RRBRBRBB”
返回:3
“BBBB”
返回:2
“RRRBRBRBRBRBR”
返回:5
我的方法:
调用长度为n的字符串s。 (注意第0和第n-1个索引是连续的)。
我使用了递归函数 recurse(string s,int i,int j)如下:
int recurse(string s,int i,int j)
{
if(i>=j)
return 0;
if(s[i]==s[j])
return(1+recurse(s,i+1,j-1));
else return max(recurse(s,i,j-1),recurse(s,i+1,j));
}
我从 i=0 和 j=n-1 开始,因为如果它们相等,它们将是连续的,用 (i+1,j-1) 调用函数,如果不相等,则调用这两种可能性函数 recurse(s,i,j-1) 和 recurse(s,i+1,j) 并将取这两者中的最大值。
我为每个可能的起始对调用了这个函数,即
用于输入“RRRBRRRBB”。
我用输入调用函数 recurse():
以此类推,直到涵盖所有情况。
但我得到了 WA,但无法确定我的方法中为什么它无法工作的缺陷。
最佳答案
要更正您的解决方案,您应该在每个递归调用中执行以下操作:
s="RRRBRRBB" i=0 j=n-1
s="RRBRRBBR" i=0 j=n-1 (Moved the string left and the earlier leftmost is now the rightmost)
s="RBRRBBRR" i=0 j=n-1 (the same operation)
and so on until all the cases are covered.
但我对这种情况感到 TLE。
解决方案:这是一个简单的问题。
1) 从字符串中删除所有对,其中 s[i] == s[(i+1) % n],并计算计数。 (i 从 0 到 n-1)。
2) 迭代 #1 直到您的字符串没有转换为“RBRBRBRB...RB”或“BRBRBRBRBR...BR”,对于这种特殊的套管结果(长度/2)- 1;
关于algorithm - 寻找最大匹配 Topcoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14337046/
如果您熟悉 TopCoder,您就会知道您的源代码会获得最终的“成绩/分数”,这取决于时间、编译次数等,其中权重最高的一项是性能。但是他们如何测试,是否有某种简单的代码(java 或 c++)可以做到
我不知道如何使用顶级编码器的离线可视化工具。这是我第一次尝试进行 topcoder 挑战。割草机挑战: https://community.topcoder.com/longcontest/?modu
这段代码在 Topcoder 上给出了一个编译错误。在 code::blocks 上,它编译时有 0 个错误和 0 个警告,打印了 vector ,但它以非零值退出,这导致窗口显示“Interesti
我一直在努力解决the following TopCoder problem : You are playing a strategy game and you wish to train the s
我正在尝试理解问题 DivFreed2在 TopCoder 上: 它具体规定了数组 数组的长度为n。 每个元素都是 1 到 k 之间的整数,包括 1 和 k。 只要 A 和 B 是数组的两个连续元素(
这是一道来自 Topcoder SRM 566 Div2 的算法题。 问题可以查看here . 对于那些没有 topcoder 帐户的人,问题描述如下: Penguin Pals 是一项配对服务,使用
我正在尝试解决这个顶级编码器问题。看了解法分析还是看不懂。 解决方案的基本思路是逆向思考,插入元素而不是删除。但这如何降低问题的复杂性? 我明白这是一个动态规划问题。我在维基百科上读到,DP问题避免重
我正在尝试为 TopCoder 中的一个问题提交解决方案,这需要提交遵循其预定义的类和方法。由于我是 TopCoder 的新手,我主要是在尝试适应编码界面。这段代码在我的电脑上编译完美。不幸的是,在
下面的代码是一个流行的 topcoder 问题的答案 FourBlocks (您需要登录)。该解决方案使用位掩码内存来使用大小为 1 的 block 和大小为 4 的正方形 block 来查找网格中的
这是在 TopCoder 竞赛中使用的问题。我了解大部分解决方案,它本质上是在任何时间点跟踪特定节点的最佳解决方案,并且在到达目标节点后可以输出最佳解决方案。但是,该解决方案使用 BFS,我很困惑,因
自 HOURS 以来,我一直在努力思考这个 TopCoder 问题,但无法找到一个完美的解决方案,并找到了下面给出的一个使用得非常漂亮的解决方案! 我想弄清楚这个解决方案如何适用于给定的问题?而我当初
我最近加入了 TopCoder,过去几天一直在练习室练习。我遇到了这个我似乎无法解决的问题。任何帮助将不胜感激。 问题 The product value of a string is the pro
在TopCoder或ACM ICPC的比赛中编写中高难度程序的优秀程序员,在提交前必须确保算法的正确性。 虽然他们提供了一些示例测试用例来确保正确的输出,但是它如何保证程序会正确运行?他们可以自己写一
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我是TopCoder的新手,想登录TopCoder Arena时很迷茫。 我已经注册并选择了我想参加 TopCoder 比赛,然后当我打开从网站下载的 jnlp 文件时。它显示了当前的登录页面。但是,
我想构建一个可下载的桌面软件,向用户显示带有示例问题的 GUI。 然后用户继续编写解决方案并将其粘贴到空白屏幕。 程序对其进行评估并给用户打分。用户进入下一级别。 我的问题是,这些网站如何评估程序的正
我想实现一个测试用例,它将运行特定的 java 类,然后向它提供输入并从中获取输出。 所以,这里有三个问题: 1) 我们如何从 junit 运行另一个 java 类?我们需要运行命令行来执行此操作吗?
我的以下代码适用于其他 https 站点,但不适用于 TopCoder。输出文件如下: Can't connect to community.topcoder.com:443 LWP::Protoco
我一直卡在问题grafixMask现在一天。这是我按照 DFS 教程中的伪代码编写的代码。我认为我的代码不遵守决定包含哪个网格的条件,导致错误的答案,但我不知道如何解决它。 #include
我正在尝试解决 JanuszInTheCasino problem其中一个测试用例 (test_one) 失败。我无法弄清楚问题所在。有什么想法吗? 代码如下: import java.util.Ma
我是一名优秀的程序员,十分优秀!