给定N作为位数,K作为1的数量,如何生成包含K个和Nk零的所有二进制表示?
换句话说,我有:
N=4 //number of bits
K=2 //number of ones
Run Code Online (Sandbox Code Playgroud)
包含N位,K个和NK零的所有可能二进制值是:
1100
1010
1001
0110
0101
0011
Run Code Online (Sandbox Code Playgroud)
到目前为止我什么都没有.我不是要求代码.我只想问最好的方法吗?一个算法?伪代码?也许是讨论?
编辑:我要求代码/伪代码来解决问题...而不是数学公式......
给定两个正整数x和y,我需要找到大于或等于x的下一个数字,它是y的倍数.
例如:
x = 18,y = 3 => 18
要么
x = 18,y = 5 => 20
要么
x = 121,y = 25 => 125
我的第一个想法是继续增加x直到我找到一个匹配但是对于高y值来说效率相当低.
然后我想到了,x - (x % y) + y但如果x是y的倍数,那就无法工作.当然,我总是可以使用公式中的三元运算符进行调整x - ((x % y)==0?y:x % y) + y.
有没有人有任何好的,聪明的,简单的建议或完整的解决方案比我所提到的更好?我错过了逻辑中明显的东西吗?
我将使用Java(这是一个更大的算法的一小部分),但如果它是全直的数学,伪代码将同样有用.
可能重复:
如何在PHP中查找字符串的所有子字符串
查找列表的所有子集
如何计算字符串的所有可能子串?例如给出一个字符串ABCDE.所有可能的子串都将是
A,B,C,D,E,AB,BC,CD,DE,ABC,BCD,CDE,ABCD,BCDE,ABCDE
谢谢!伪代码将受到高度赞赏.:d
我可以使用动态编程以正确的方式执行此操作,但我无法弄清楚如何在指数时间内执行此操作.
我正在寻找两个字符串之间最大的公共子序列.注意:我的意思是子序列而不是子串,构成序列的符号不必是连续的.
所以我正在为我的一个计算类回答一个问题.我开发了一种算法,然后它问我算法的复杂性.我目前不太擅长确定复杂性,所以任何人都可以验证吗?
代码如下:
if( A.type is not Comparable ): return False // Max runs = 1
current ? A.head // Max runs = 1
printedFirst ? False // Max runs = 1
while( current.hasNext ): // Max runs = s-1
if ( current.value < current.next.value ): // Max runs = s-1
if ( printedFirst ): print “, “ // Max runs = s-1
print “(“ + current.value + “, “ + current.next.value + “)” //runs = s-1
printedFirst ? True // …Run Code Online (Sandbox Code Playgroud) 这里是...
\n\nInput: n > 3, an odd integer to be tested for primality;\nInput: k, a parameter that determines the accuracy of the test\nOutput: composite if n is composite, otherwise probably prime\nWrite n \xe2\x88\x92 1 as (2^s)\xc2\xb7d with d odd by factoring powers of 2 from n \xe2\x88\x92 1\nWitnessLoop: repeat k times:\n pick a random integer a in the range [2, n \xe2\x88\x92 2]\n x \xe2\x86\x90 a^d mod n\n if x = 1 or x = n \xe2\x88\x92 1 then …Run Code Online (Sandbox Code Playgroud) 我一直在研究减少Swift中的分数的函数,并且遇到了欧几里德算法以找到最大公因子(http://en.wikipedia.org/wiki/Euclidean_algorithm)
我把伪代码转换成了swift,但是我很困惑,如果它返回a了我认为应该是分数的分子,这将给我一个最大的共同因素.任何有关这方面的帮助将不胜感激.谢谢!
伪代码:
function gcd(a, b)
while b ? 0
t := b
b := a mod b
a := t
return a
Run Code Online (Sandbox Code Playgroud)
迅速:
var a = 2
var b = 4
func gcd(a: Int, b: Int) -> Int {
var t = 0
while b != 0 {
t = b
let b = a % b
let a = t
}
return a
}
println("\(a)/\(b)")
Run Code Online (Sandbox Code Playgroud)
控制台输出: 2/4
我有一个大小为4 x 10的矩阵.我想计算总和的所有可能条目的总和.换句话说,如果你有一个2 x 2矩阵
2 3
4 1
Run Code Online (Sandbox Code Playgroud)
然后有2 ^ 2个和(2 + 3,2 + 1)和(4 + 3和4 + 1).类似地,如果你有一个2 x 3矩阵,则总共有2 ^ 3 = 8个总和.允许重复.由于我的矩阵是4 x 10,因此总共有1,048,576个.
我究竟如何在R中计算出来?伪代码也很好,因为我很确定我可以转换成R.但是专门的R包/函数会更好.
考虑以下向量(或数据帧或数据表)
a = data.frame(x = c(2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1))
Run Code Online (Sandbox Code Playgroud)
x代表一个'状态',1或2.矢量数据代表空间数据,我希望获得每个州的平均长度.换句话说,我们看到,对于固定state = 2,有两个部分:2, 2, 2, 2和2, 2, 2长度4和3.因此,这种状态的"平均"长度是(4 + 3)/2 = 3.5.
我的实际数据集的状态为1-9,向量中有超过1,000,000个点.我的困难是"打破"向量并计算细分.我正在使用R,但伪代码会很好.
注意:如果有人能想出更好的标题,请告诉我或提交编辑.
我愿意实现一种算法,以最有效的方式(即最准确的结果 + 最少的时间)解决旅行商问题的二维欧几里得版本。在做我的研究时,我发现了很多算法,但Arora 1998 年的论文和它的介绍让我觉得可能是最好的算法。还有其他版本的解决方案使用相同的想法,例如Schultes在 2004 年的那个。问题是实现它似乎非常困难(如果不是不可能的话),我发现没有任何人以可访问的方式这样做的记录尽管这篇论文发表已经快 20 年了。
是否有任何现有的实施或至少有一个指导方针?如果不是,那么什么是现有且可实现的算法来尽可能最好地替代它?
algorithm pseudocode traveling-salesman polynomial-approximations
pseudocode ×10
algorithm ×6
r ×2
big-o ×1
exponential ×1
ios ×1
math ×1
permutation ×1
primes ×1
sequence ×1
string ×1
substring ×1
swift ×1
vb.net ×1