最优算法问题(200分)

antshome 2002-06-24 10:37:52
有三个数组,维数不定
A1 1,2
A2 1,3,5
A3 6,7

想取得这样的数组(实际上是前三个数组重新组合成一个新数组,不重复)
1,1,6
1,3,6
1,5,6
1,1,7
1,3,7
1,5,7
2,1,6
2,3,6
2,5,6
2,1,7
2,3,7
2,5,7

求最快的算法,200分奉上
...全文
55 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
antshome 2002-06-25
  • 打赏
  • 举报
回复
看来是没有最好的了,给分
sugrong 2002-06-24
  • 打赏
  • 举报
回复
可以使用关系代数语言计算
速度与数据库的原理一样。
当然最简便的是用三重嵌套
胡楮智 2002-06-24
  • 打赏
  • 举报
回复
是的,就这样,使用array()赋值应该是最快的算法!
胡楮智 2002-06-24
  • 打赏
  • 举报
回复
对了,总算出来了,是这样引用: aa(m)(n)
胡楮智 2002-06-24
  • 打赏
  • 举报
回复
看下面的例子:
Dim i As Integer
Dim j As Integer
Dim aa As Variant
Dim a(4) As Integer
Dim b(4) As Integer
Dim c(4) As Integer
For i = 0 To 4
a(i) = i
b(i) = i
b(i) = i
Next
aa = Array(a, b, c)
这样会将形成的东西放到变体aa中,但要命的是我不知怎么引用aa的元素
看看那位大侠指点一下!
antshome 2002-06-24
  • 打赏
  • 举报
回复
我先看一下还有没有更好的,如果没有就给分了
pl5th2001 2002-06-24
  • 打赏
  • 举报
回复
同意mornwoo(疾风之虫)
胡楮智 2002-06-24
  • 打赏
  • 举报
回复
处理这种问题你可以使用自定义类型来处理不定维数的数组:
Type result
Nb() As Integer
End Type

Private Sub s_Compute()
Dim aa() As result
……
ReDim aa(n) '确定数组的维数,n是维数,也就是前面有几个数组,3 or 7
for i=0 to n
redim aa(i).nb(m) ‘m是用排列组合计算出来的数组的深度,
next
'引用数组时可以这样引用:aa(x).nb(y),相当于array(x,y)


End Sub
胡楮智 2002-06-24
  • 打赏
  • 举报
回复
处理这种问题你可以使用自定义类型来处理不定维数的数组:
Type result
Nb() As Integer
End Type

Private Sub s_Compute()
Dim aa() As result
……
ReDim aa(n) '确定数组的维数,n是维数,也就是前面有几个数组,3 or 7
for i=0 to n
redim aa(i).nb(m) ‘m是用排列组合计算出来的数组的深度,
next
'引用数组时可以这样引用:aa(x).nb(y),相当于array(x,y)


End Sub
antshome 2002-06-24
  • 打赏
  • 举报
回复
用数据库太麻烦了,有没有好一点的方法?
51jc 2002-06-24
  • 打赏
  • 举报
回复
mornwoo(疾风之虫) :
select a.a,b.b,c.c from a,b,c order by a.a,b.b,c.c

高~~~~~~实在是高~~~~~~~~~~~
---------------------------
签名??哪?在哪???
---------------------------
www.51js.com 无忧脚本
51js.ou8.net
51js.1000box.net
均可到达

胡楮智 2002-06-24
  • 打赏
  • 举报
回复
看来快的方法是没有了,
还是老老实实做三个嵌套循环生成结果把!
如果数据量大,告诉你个简单的算法:
把三个数组里的数分别放到三个表里,然后使用sql语句:
select a.a,b.b,c.c from a,b,c order by a.a,b.b,c.c

胡楮智 2002-06-24
  • 打赏
  • 举报
回复
看来快的方法是没有了,
还是老老实实做三个嵌套循环生成结果把!
如果数据量大,告诉你个简单的算法:
把三个数组里的数分别放到三个表里,然后使用sql语句:
select a.a,b.b,c.c from a,b,c order by a.a,b.b,c.c

antshome 2002-06-24
  • 打赏
  • 举报
回复
TO:Yang_(扬帆破浪)

表达错误,是个数不定

如果是7个数组或更多呢,如果7个数组里有10个元素呢?速度差别就该大了吧


Yang_ 2002-06-24
  • 打赏
  • 举报
回复
疑问:
1、从描述看,A1、A2、A3都是一维数组,怎么维数不定?是不是个数不定?
2、什么叫“不重复”,只要保证每个数组本身不重复,组合出来的一定不会重复(这个数学上是可以证明的)。

如果以上疑问解决,那就是个三重循环的问题,最快的算法速度差别不会很大。
antshome 2002-06-24
  • 打赏
  • 举报
回复
up
51jc 2002-06-24
  • 打赏
  • 举报
回复
关注。。。。。。。。。。
51jc 2002-06-24
  • 打赏
  • 举报
回复
关注!

我也要!

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧