c# - 如何计算总数使用 c# 的字符串的可能组合?

标签 c# string algorithm

我想解决一个我有这个输入的算法:

n = 30 and st = 1234321

现在我想看看使用字符串可以形成多少组合,即 它可以有

(1 2 3 4 2 1)
(1 23 4 3 2 1)
(1 2 3 4 3 21)
(12 3 4 3 2 1)
(12 3 4 3 21)
(1 23 4 3 21)

即都小于 30。所以总组合将为 6。

但是当我们单独出现 0 或像 09 这样的前导时,我们会丢弃计数中的字符串。

以这种情况为例:n = 70 和 st = 8675309。现在在这种情况下我们有:

(8 6 7 5 3 0 9)
(8 67 5 3 0 9)
(8 6 7 53 0 9)
(8 6 7 5 30 9)
(8 6 7 5 3 09)
(8 67 53 0 9)
(8 67 5 30 9)
(8 67 5 3 09)

这里的计数总数仅为 2,因为(如果我们单独出现 0 或像 09 这样的前导,我们不计算)。

请向我推荐用于查找此类组合的 c# 代码。

最佳答案

您可以将您的空间建模为二叉树:在第 n 层,左 child 加入第 nn+1 列表中的第 th 个数字,而右 child 没有。使用 DFS 并修剪您的约束非法的分支,然后计算叶节点。

关于c# - 如何计算总数使用 c# 的字符串的可能组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050719/

相关文章:

c - 使用 scanf() 读取不超过字符串的大小

java - 如何从集合中删除长度为 5 的字符串?

arrays - 垂直循环二维数组并从每行中选择一个

c# - GZipStream 正在切断 XML 的最后一部分

c# - 在 Entity Framework 中创建动态 linq 排序和搜索顺序语句时

c# - 以编程方式双击系统托盘图标 Windows xp/7

algorithm - 如果在一分钟内移动到N + 1,N - 1和2 * N,如何在最短的时间内到达目标楼层?

c# - Entity Framework 存储过程返回空对象

c# - .NET 是否有任何可用的方法来获取两个字符串的差异?

algorithm - 多项式的 n 次方算法