生成每个可能的 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 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。