求算法 (100分)

G

ghiewa

Unregistered / Unconfirmed
GUEST, unregistred user!
例有 n组数据(n不定) 每组数据的个数不定 希望从每组数据组中取出一个数据进行组合 有什么好算法吗
如:array1[2],array2[5],array4[9],arry5[16]
组成 array1[0]+array2[2]+array3[0]+array4[3]+array5[10]
...
有求 列举所有可能组合
DynamicArray<DynamicArray<short>> ary;
组合不要求随机
 
请看: http://www.delphibbs.com/delphibbs/dispq.asp?lid=1008308
数组A中存放每组数据的个数,MaxNumPerGrp=1,TotalNum=ArrayLen。 OK!
 
又是深度优先...
 
有没有C语言版的 ObjectPascal的 我不是太看的懂
 
没办法,重新拾起C++..
typedef DynamicArray<DynamicArray<short> > T2DIntAry;
DynamicArray<int> R;
void OutputResult(T2DIntAry Num)
{
AnsiString str,s="";
for(int i=0;i<R.Length;i++){
s+=str.sprintf("%d/t",Num[R]);
}
Form1->Memo1->Lines->Add(s);
}
voiddo
InAll(T2DIntAry Num,int level)
{
if(level==Num.Length)
{
OutputResult(Num);
return;
}
if(R.Length==0)
R.Length=Num.Length;
for(int i=0;i<=Num[level].High;i++)
{
R[level]=i;
do
InAll(Num,level+1);
}
if(level==0)
R.Length=0;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
T2DIntAry Nums;
Nums.Length=4;
Nums[0].Length=4;
Nums[0][0]=2;
Nums[0][1]=4;
Nums[0][2]=5;
Nums[0][3]=7;
Nums[1].Length=3;
Nums[1][0]=1;
Nums[1][1]=8;
Nums[1][2]=9;
Nums[2].Length=2;
Nums[2][0]=6;
Nums[2][1]=7;
Nums[3].Length=3;
Nums[3][0]=1;
Nums[3][1]=0;
Nums[3][2]=3;
do
InAll(Nums,0);
}

2 1 6 1
2 1 6 0
2 1 6 3
....
4 8 6 3
4 8 7 1
4 8 7 0
....
7 9 6 3
7 9 7 1
7 9 7 0
7 9 7 3
OK?
 
[:D] 太谢谢 creation-zy 了
感激涕零
 

Similar threads

S
回复
0
查看
956
SUNSTONE的Delphi笔记
S
S
回复
0
查看
779
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部