我老了,变笨了
请教一下:
有a,b,c,d四个变量
我想罗列出所有的排列的可能性怎么做?
1、如果只有思路也请提点一下
2、我会尽力在各位想出前,解决
请教一下:
有a,b,c,d四个变量
我想罗列出所有的排列的可能性怎么做?
1、如果只有思路也请提点一下
2、我会尽力在各位想出前,解决
解决方案 »
- delphi Canvas.TextWidth 返回值 为 0
- 郁闷死了!注入成功发现不知该如何调用DLL里面的函数。
- 好久没来CSDN了. 分享经验 <Delphi中DLL的消息处理> 开心, 散分.
- 局域网内,装的都是WIN98,有一台机能访问其它所有的机子, 但却不能被其它机子所访问,请问怎么回事?
- 谁能给个进销存的方案,学习用?
- visual sourcesafe谁懂啊?
- 请问如何在两个数据库之间进行联合查询?
- 函数声明
- 请问怎样获得dbgrid中的某条记录的某个字段的值?(
- delphi如何起动word并自动调用一个已定义的宏?
- 十万火急,如何使用d6盘上的installshield打包?
- 小弟问题,大虾们好,如何用代码实现如下功能。
-> A、(B、C、D) = [A、(BCD)] 和 [(BCD)、A]
-> BCD = [B(CD)]、[(CD)、B]
-> CD = [CD]、[DC]原型是:两个变量 X、Y 的排列只有 XY 和 YX。即:N个变量(X1, X2, ..., XN)的排列,等价于
X1(X2..XN的排列)和(X2..XN的排列)X1。
如此递归到原型即可。
var
i,j,k:integer;
a,b,c,d,t1,t2,t3 :string;
begin
a:='a';
b:='b';
c:='c';
d:='d';
for k:=0 to 1 do
begin
t1:=c;
c:=d;
d:=t1;
for j:=0 to 2 do
begin
t1:=b;
b:=c;
c:=d;
d:=t1;
for i:=0 to 3 do
begin
t1:=a;
a:=b;
b:=c;
c:=d;
d:=t1;
ShowMessage(a+b+c+d);
end;
end;
end;end;
var
ss:array[1..4] of string;
i,j,k,n: integer;
begin
ss[1]:='a';
ss[2]:='b';
ss[3]:='c';
ss[4]:='d';
for i:=1 to 4 do
begin
for j:=1 to 4 do
begin
for k:=1 to 4 do
begin
for n:=1 to 4 do
begin
if (j<>i) and (k<>i) and (n<>i) and (k<>j) and (n<>j) and (n<>k) then
memo1.Lines.Add(ss[i]+ss[j]+ss[k]+ss[n]);
end;
end;
end;
end;
end;
算法比较笨,不知到行不行,如果排列的在多些的话,这个可能不是很好用。运行结果:
abcd
abdc
acbd
acdb
adbc
adcb
bacd
badc
bcad
bcda
bdac
bdca
cabd
cadb
cbad
cbda
cdab
cdba
dabc
dacb
dbac
dbca
dcab
dcba
找本数据结构或高程的书看看吧!34个数的排例用jshnet(泰山)的办法好了!