如何计算总数使用 C# 的字符串的可能组合
本文关键字:字符串 组合 何计算 计算 | 更新日期: 2023-09-27 18:21:39
我想求解一个我有这个输入的算法:
n = 30 且 st = 1234321
现在我想看看使用字符串可以形成多少个组合,即它可以有
(1 23 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
级,左子级加入列表中的第 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
与使用树相比,性能会有点糟糕,但对于小长度的起始字符串来说不是很大。