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

本文关键字:字符串 组合 何计算 计算 | 更新日期: 2023-09-27 18:21:39

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

n = 30 且 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# 代码来查找此类组合。

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

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

下面是指向

C# 中字符串排列类的教程和代码的链接。 我不会将您的数字转换为此代码,因为它非常简单。

祝你好运!

这是一个简单的问题,唯一独特的部分是您需要计算所有子字符串值并获取唯一值,然后找到所有组合,然后加起来小于 60。

1) Get all unique sub string values
2) Get all permutations for these values
3) then remove any that add up to be over 60
4) do step 2 again

此处讨论步骤 2 到 4

与使用树相比,性能会有点糟糕,但对于小长度的起始字符串来说不是很大。