全部穷举?.......按长度做个双重循环就可以了推荐使用IBM‘s 更深的蓝来execute this shitAppLicAtIoN
嵌套循环,自己设置功能吧,跳转,break等等的
版主,怎么不和我联系,有人冒充你和我联系,给我被骗,并给了他原代码。晕ing
kiboisme(jolt):我给你发了消息,你没收到吗?
前段时间回过几个类似的问题!http://expert.csdn.net/Expert/topic/1463/1463128.xmlprocedure GetNum(Str:String;n:integer); var m:integer; nStr:String; procedure Num(i:integer); var j:integer; begin Inc(m); for j:=i+1 to Length(Str)-n+m do begin nStr:=nStr+Str[j]; if m=n then begin Memo.Lines.Add(nStr); nStr:=Copy(nStr,1,m-1); end else begin Num(j); end; if j=Length(Str)-n+m then begin Dec(m); nStr:=Copy(nStr,1,m-1); end; end; end;begin if Length(Str)<n then Exit; m:=0; Num(0); end;如GetNum('1234567890abcdefg',n);即可取得N个数的全部组合!再看这张贴子http://expert.csdn.net/Expert/topic/1455/1455838.xmlvar NumArr:array[0..99] of integer; GetNumArr:array[0..29] of integer; i:Integer; procedure GetNum; var i,n:integer; begin for i:=Low(NumArr) to High(NumArr) do NumArr[i]:=i+1; Randomize; for i:=Low(GetNumArr) to High(GetNumArr) do begin n:=Random(High(NumArr)+1-i); GetNumArr[i]:=NumArr[n]; if GetNumArr[i]<>NumArr[High(NumArr)] then begin NumArr[n]:=NumArr[High(NumArr)+1-i]; end; end; end;随机从100个数里取30个数
To kiboisme:来CSDN大家都是朋友,这种简单算法,几分钟就能写出来,有就大家一起共享,不要说骗这么难听嘛~~~^_^
To ehom(?!) 这个东西说简单也简单说复杂也复杂。 如果用来猜测密码,就很讲究了,比如过滤掉一些无用的组合,左右手习惯规则,数字习惯,大小写,那些组合先猜,那些后猜,等等。这些都要在程序里体现啊。 如果用来干其他事情,完全组合的情况,就很简单了。
var
m:integer;
nStr:String; procedure Num(i:integer);
var
j:integer;
begin
Inc(m);
for j:=i+1 to Length(Str)-n+m do
begin
nStr:=nStr+Str[j];
if m=n then
begin
Memo.Lines.Add(nStr);
nStr:=Copy(nStr,1,m-1);
end
else
begin
Num(j);
end;
if j=Length(Str)-n+m then
begin
Dec(m);
nStr:=Copy(nStr,1,m-1);
end;
end;
end;begin
if Length(Str)<n then Exit;
m:=0;
Num(0);
end;如GetNum('1234567890abcdefg',n);即可取得N个数的全部组合!再看这张贴子http://expert.csdn.net/Expert/topic/1455/1455838.xmlvar
NumArr:array[0..99] of integer;
GetNumArr:array[0..29] of integer;
i:Integer; procedure GetNum;
var
i,n:integer;
begin
for i:=Low(NumArr) to High(NumArr) do
NumArr[i]:=i+1;
Randomize;
for i:=Low(GetNumArr) to High(GetNumArr) do
begin
n:=Random(High(NumArr)+1-i);
GetNumArr[i]:=NumArr[n];
if GetNumArr[i]<>NumArr[High(NumArr)] then
begin
NumArr[n]:=NumArr[High(NumArr)+1-i];
end;
end;
end;随机从100个数里取30个数
这个东西说简单也简单说复杂也复杂。
如果用来猜测密码,就很讲究了,比如过滤掉一些无用的组合,左右手习惯规则,数字习惯,大小写,那些组合先猜,那些后猜,等等。这些都要在程序里体现啊。
如果用来干其他事情,完全组合的情况,就很简单了。