新手请教穷举算法(100分)

  • 主题发起人 主题发起人 aaasss
  • 开始时间 开始时间
A

aaasss

Unregistered / Unconfirmed
GUEST, unregistred user!
请教授指点:
如何实现字符的穷举,如,开始字符是AAA,下一个是AAB,依次类推
 
我是菜鸟,但我想这个办法可以解决你的问题:
改一下进制,用26进制来解决:
定义一个数组,长度是你字符串的长度,
赋初值为0,即0代表A,
开始循环
最后1个数组元素的值加1,现在变成[0][0][1],翻译过来就是AAB
如果超出25比如现在是[0][0][25]就是AAZ,加一变[0][0][26],
那么进位变成[0][1][0],即ABA,如果下一位也进位,循环处理进位直到没有进位
结束循环

还可以加以修改比如从65开始循环,就是ASC码简单一点,还可以用枚举型
 
哎,用递归啦,这么简单的问题。
 
function GetNextStr(str: string): string;
const
L=33; //最低字符
H=126; //最高字符
var
i,Ascii:integer;
begin
Result:='';
i:=length(str);
Ascii:=ord(str)+1;
while (Ascii>H) and (i>0) do
begin
Str:=chr(L);
i:=i-1;
Ascii:=ord(str)+1;
end;
if i=0 then exit;
Str:=chr(Ascii);
Result:=Str;
end;
//当返加一个空字符串时,穷举完成。
 
哇,你小子想。。。。。
 
多人接受答案了。
 
后退
顶部