是高手的请进来共同参讨这种算法,菜鸟请一边站着学习。(50分)

  • 主题发起人 主题发起人 xieyj
  • 开始时间 开始时间
X

xieyj

Unregistered / Unconfirmed
GUEST, unregistred user!
这个算法对于我来说是很难的,但不知道各位如何看。
请看题目:
我列出五个数字(这五个数字共同都有五种可能就是这五个数字的值。):
0 2 4 6 8
2 4 6 8 0
4 6 8 0 2
6 8 0 2 4
8 0 2 4 6
比如这里面就有5的5次方种可能。我应该怎么遍历出这些具体的组合呢?
例有:02468,04680,44444等等。
我如果想遍历出这些具体值应该怎么写代码。
 
循环、循环再循环呀!
 
觉得不难实现,但我是菜鸟,只好站在一边学习了~~~~
 
请Activer这位说出具体的代码,我也知道循环再循环
 
我的理解水平太差,不知道是否是枚举出所有的可能,用穷举法不就可以了吗:
procedure enumlist();
var
a,b,c,d,e: integer;
begin
for a := 0 to 9 do
for b := 0 to 9 do
for c := 0 to 9 do
for d := 0 to 9 do
for e := 0 to 9 do
writeln(format('%d%d%d%d%d', [a,b,c,d,e]));
end;
 
楼上的最简单,用递归也一样
 
用递归吧,以前我贴过一个递归字母的,你找一下吧,类似的还很多
 
速度不会太慢吧
 
五个数字的排列组合?
高中数学题。。。
 
我是菜鸟,你们看着扮吧。
 
来个麻烦的
var i:integer;
begin
for i:=2468 to 86420 do
if ((i mod 10) in [2,4,6,8,0]) and
(((i div 10) mod 10) in [2,4,6,8,0]) and
(((i div 100) mod 10) in [2,4,6,8,0]) and
(((i div 1000) mod 10) in [2,4,6,8,0]) and
(((i div 10000) mod 10) in [2,4,6,8,0]) then
writeln(i);
end.


 
或者:
var IEnum:array [1..5] of integer;
a,b,c,d,e:integer ;
begin
IEnum[1]:=0;IEnum[2]:=2;IEnum[3]:=4;IEnum[4]:=6;IEnum[5]:=8;
for a:=1 to 5 do
for b:=1 to 5 do
for c:=1 to 5 do
for d:=1 to 5 do
for e:=1 to 5 do
writeln(format('%d%d%d%d%d', [IEnum[a],IEnum,IEnum[c],IEnum[d],IEnum[e]]));
end.


 
上楼这位老兄,我要把这些结果写在LISTVIEW中应该怎么写,我写代码提示错误。请给出你的代码多谢。
 
要是菜鸟边站着学习。高手死光了,不就没有高手了吗,这种人我最讨厌,人好像被你分成三、六九等似的
 
你知道什么,给你们学习的机会,难道我说错啦
 
var IEnum:array [1..5] of integer;
a,b,c,d,e:integer ;
it:TlistItem;
begin
IEnum[1]:=0;IEnum[2]:=2;IEnum[3]:=4;IEnum[4]:=6;IEnum[5]:=8;
for a:=1 to 5 do
for b:=1 to 5 do
for c:=1 to 5 do
for d:=1 to 5 do
for e:=1 to 5 do begin
it:=listview1.Items.Add;
it.Caption:=format('%d%d%d%d%d', [IEnum[a],IEnum,IEnum[c],IEnum[d],IEnum[e]]);
end;
end;
 
各位老大他的意思是任意几个数,难到要在for中加if吗?
我的意思是将任意个数组成字符串,然后按位置换。
 
这个算法对于我来说是很难的,.........
 
谢谢各位。分不多,只有分一个人
 

Similar threads

D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
831
DelphiTeacher的专栏
D
后退
顶部