假设我们有一个二进制数,它是数字 n 的表示形式。我们必须找到一个比 n 大但最小的数字的二进制表示,并且它也具有相同数量的 0 和 1。因此,如果数字是 1011(十进制为 11),则输出将为 1101(13)。这个问题可以使用下一个排列计算来解决。让我们看看算法来了解一下。算法nextBin(bin) −开始 len := bin 的长度 for i in range len-2, down to 1, do if bin[i] is 0 and bin[i+1] ... 阅读更多
在 CLRS 书中,BFS 算法使用向量和队列进行描述。我们必须使用 C++ STL 实现该算法。让我们首先看看算法。算法BFS(G, s) −开始 for each vertex u in G.V - {s}, do u.color := white u.d := infinity u.p := NIL done s.color := green s.d := 0 s.p := NIL Q := NULL insert s into Q while Q is not null, do u = delete from Q for ... 阅读更多
这里我们将看到求婚数。这是一对数,其中一个数的真因数之和比另一个数大 1。我们必须找到这些对例如,这对数是 (48, 75)。因此 48 的因数是 {1, 2, 3, 4, 6, 8, 12, 16, 24},总和为 76。类似地,75 的因数是 {1, 3, 5, 15, 25},总和为 49。算法BetrothedPairs (n) −开始 for num in range 1 to n, do sum := 1 for ... 阅读更多