有七位数,EFGHIJK,每位数都是从0到9中任选。怎么样得到的排列组合数据是从小到大排列。

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:50:06
上面的问题要像1到3数中任选,得到两位数CD,如第一次我得到12,第二次我得到31。要求把第一次第二次得到的数按小大排列组合,12 13
21 31
如第一次得到的是11第二次得到的是21,也要这样排列出来
11 12
11 21
用程序实现。

var
i,j,k,l,m,n,o:integer;
begin
for i:= 0 to 9 do
for j := 0 to 9 do
for k := 0 to 9 do
for l := 0 to 9 do
for m := 0 to 9 do
for n := 0 to 9 do
for o := 0 to 9 do
begin
ShowMessage(IntToStr(i)+IntToStr(j)+IntToStr(k)+IntToStr(l)+IntToStr(m)+IntToStr(n)+IntToStr(o));
end;

共有9*9*8*7*6*5*4个数,可以使用递归的思想,先定第一位,然后定后后6位。例如,第一位是1,那么后六位就只能从剩下的9个数字选了。所以只要一个统一的函数接口让其递归就行了,不过不知道会不会溢出。

楼上的方法啥时候能运行完呀?效率极低