生成每个可能的 7 位数字组合的算法 [关闭]

Posted

技术标签:

【中文标题】生成每个可能的 7 位数字组合的算法 [关闭]【英文标题】:Algorithms To Generate Every Possible Combination of 7 Digit [closed] 【发布时间】:2015-02-02 00:57:31 【问题描述】:

我正在尝试找到一种算法来生成 7 个字符串的所有可能组合。字符串必须始终包含 3 个数字 (0-9) 和 4 个字母 (A-Z)

示例: 1GH2G2G, 22JUYT1, HGTY222

但我需要这些的所有可能组合。 我使用的是 c++,但欢迎使用伪代码。

编辑(澄清): 问题是生成以下字符集“ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”的所有可能组合,该字符集长度为 7 个字符,并且始终必须包含 3 个数字 (0-9) 和 4 个字母 (A-Z)。我没有开始的基本字符串,上面的例子只是为了显示输出应该是什么样的。

非常感谢任何帮助,谢谢

【问题讨论】:

你试过什么,什么没用?这听起来不是很困难,请向我们展示您的尝试。 分别生成3个数字和4个字母,放入一个字符串,然后shuffle。 是的,这很容易。困难的部分是生成每个组合一次。 @user3284667 关键字:lexical permutation 【参考方案1】:

试穿它的大小。这是帕斯卡,但你会明白的。

procedure GenerateCodes;
begin
  GenerateRest(7, 4, 3, '');
end;

procedure GenerateRest(
   CharsLeft, LettersLeft, DigitsLeft: Integer; 
   const Prefix: string);
var
  c: char;
begin
  if CharsLeft  = 0 then begin
    write(Prefix,' ');
    exit;
  end;

  if LettersLeft > 0 then
    for c := 'A' to 'Z' do
      GenerateRest(CharsLeft - 1, LettersLeft - 1, DigitsLeft, Prefix + c);

  if DigitsLeft > 0 then
    for c := '0' to '9' do
      GenerateRest(CharsLeft - 1, LettersLeft, DigitsLeft - 1, Prefix + c);
end;

【讨论】:

你我的朋友真棒!现在移植到 C++。

以上是关于生成每个可能的 7 位数字组合的算法 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

swift算法:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

组合生成的迭代算法

在excel中怎样生成随机的4位字母数字组合,谢谢

java字母和数字排列组合后

生成 0, 1,...n-1, n 个 k 数的所有可能组合。每个组合应按升序排列[重复]

输入6到16位字母与数字组合应该怎样输?