现在CodeSprint 3已经结束了,我一直想知道如何解决这个问题.对于r和n的大值,我们需要简单地计算nCr mod 142857(0 <= n <= 10 ^ 9; 0 <= r <= n).我使用递归方法,通过min(r,nr)迭代来计算组合.结果证明这不够有效.我尝试过几种不同的方法,但它们似乎都不够高效.有什么建议?
我有一堆像以下一样的字符串:
"Hello, here's a test colon:. Here's a test semi-colon;"
Run Code Online (Sandbox Code Playgroud)
我想替换它
"Hello, here's a test colon:. Here's a test semi-colon;"
Run Code Online (Sandbox Code Playgroud)
等等所有可打印的ASCII值.
目前我正在使用boost::regex_search匹配&#(\d+);,在我依次处理每个匹配时构建一个字符串(包括追加自我找到的上一个匹配以来没有匹配的子字符串).
谁能想到更好的方法呢?我对非正则表达式方法持开放态度,但在这种情况下,正则表达式似乎是一种合理的方法.
谢谢,
大教堂
我正在尝试打印nCr的所有可能性,这是订单无关紧要时的组合.所以5C1有5种可能性:1,2,3,4,5.5C2有10种可能性:1 2,1 3,1 4,1 5,2 2,3,2,4,5 3,4 4,3 5, 4 5.
我制作的函数打印出我想要的r = 2,r = 3和r = 4,我有点看到模式,但我似乎无法为变量r创建一个工作方法:
public void printCombinationsChoose2(int n, int k) //for when k = 2
{
for (int a = 1; a < n; a++)
{
for (int b = a + 1; b <= n; b++)
{
System.out.println("" + a + " " + b);
}
}
}
public void printCombinationsChoose3(int n, int k) //for when k = 3
{
for (int a = 1; …Run Code Online (Sandbox Code Playgroud)