C++ 生成每个可能的7位数字组合的算法

C++ 生成每个可能的7位数字组合的算法,c++,algorithm,math,C++,Algorithm,Math,我试图找到一种算法来生成7个字符字符串的所有可能组合。字符串必须始终包含3个数字0-9和4个字母A-Z 例如: 1GH2G2G, 2200万日元, HGTY222 但我需要所有可能的组合。 我使用C++,但是欢迎使用伪代码。 编辑以澄清: 问题是生成以下字符集ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789的所有可能组合,该字符集的长度为7个字符,并且始终必须包含3个数字0-9和4个字母A-Z。我没有基本字符串,上面的示例只是为了说明输出应该是什么样子 非常感谢您的帮助,

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

例如: 1GH2G2G, 2200万日元, HGTY222

但我需要所有可能的组合。 我使用C++,但是欢迎使用伪代码。 编辑以澄清: 问题是生成以下字符集ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789的所有可能组合,该字符集的长度为7个字符,并且始终必须包含3个数字0-9和4个字母A-Z。我没有基本字符串,上面的示例只是为了说明输出应该是什么样子


非常感谢您的帮助,谢谢

试试这个尺码。是帕斯卡,但你会明白的

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;

你试过什么,什么不起作用?这听起来似乎不是很难,请告诉我们您尝试了什么。分别生成3个数字和4个字母,将它们放入一个字符串,然后洗牌。是的,这很容易。最难的部分是每一个组合生成一次。@user3284667关键字:词汇排列你我的朋友真了不起!现在转到C++。