以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教一函数  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=98469)

--  作者:hbhb
--  发布时间:2017/3/30 13:07:00
--  请教一函数
大师老驾指点一下,有5个甚至更多的的集合,如何求这些集合的交集?劳驾写一个函数如何?谢谢!
--  作者:wyz20130512
--  发布时间:2017/3/30 13:53:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:集合交集001.png
图片点击可在新窗口打开查看

以上仅是提供一个思路!

--  作者:有点色
--  发布时间:2017/3/30 14:09:00
--  

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=74201&skin=0

 


--  作者:hbhb
--  发布时间:2017/3/30 17:19:00
--  
谢谢!我是问10个集合如何求出交集?如:以下字符串集合的交集为1。用代码怎么求出?
(1,2,3,4,5,6,7,8,9,0,jcjijci)
(1,21,31,41,51,61,71,81,91,01,2222)
(1,22,32,42,52,62,72,82,92,02,4444444)
(1,23,33,43,53,63,73,83,93,03)

(1,24,34,44,54,64,74,84,94,04,jkhhh)
(1,25,35,45,55,65,75,85,95,05)
(1,26,36,46,56,66,76,86,96,06)
(1,27,37,47,57,67,77,87,97,07)
(1,28,38,48,58,68,78,88,98,08)
(1,211,311,411,511,611,711,811,911,011,11111)

--  作者:有点色
--  发布时间:2017/3/30 19:07:00
--  

要说多少遍?两两求交集,得到的集合,再和第三个求。


--  作者:hbhb
--  发布时间:2017/3/30 20:13:00
--  

封装成Dll,使用此类必须有.net3.5的支持

我是说不用上面的,上面要.net3.5支持,帮助用代码写一个简单通用高效的!

 


--  作者:有点色
--  发布时间:2017/3/30 20:28:00
--  
以下是引用hbhb在2017/3/30 20:13:00的发言:

封装成Dll,使用此类必须有.net3.5的支持

我是说不用上面的,上面要.net3.5支持,帮助用代码写一个简单通用高效的!

 

 

要说多少次?http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=75746&authorid=0&page=0&star=2

 


--  作者:hbhb
--  发布时间:2017/3/30 23:29:00
--  
我的意思是写一个函数,集合的个数作为参数,这样根据输入集合的个数随意调用该函数。我是根据Args.Length判断一个一个写的。如果有100个集合怎么写?
可否用循环写?怎么写?或有其他什么办法?

--  作者:有点蓝
--  发布时间:2017/3/31 8:45:00
--  
先取前2个集合,求出交集为一个新的集合

循环余下的集合,逐个和新集合取交集得出新的集合,直至交集为0或者循环完毕

dim 集合1 as list
dim 集合2 as list
dim 交集 as list

for i as integer = 2 to Args.Length - 1
    dim 临时交集 = 交集与Args(i)的交集
    交集 = 临时交集
next

--  作者:有点色
--  发布时间:2017/3/31 9:29:00
--  

汗,自己就不能总结?

 

Dim ls1 As List(Of String) = args(0)
For i As Integer = 1 To args.length-1
    Dim Ls2 = args(i)
    Dim Ls As String
    Dim lsb As new List(Of String)
    For Each Ls In ls1
        If ls2.contains(ls) AndAlso lsb.contains(ls) = False Then
            LsB.Add(Ls)
        End If
    Next
    ls1 = lsb
Next

Return ls1

 

 

------------------------调用

 

Dim Names As New List(Of String)
Names.Add( "电视机")
Names.Add("电冰箱")
Names.Add("洗衣机")

Dim Names1 As New List(Of String)
Names1.Add( "电视机")
Names1.Add("123")
Names1.Add("洗衣机")

Dim Names2 As New List(Of String)
Names2.Add( "电视机")
Names2.Add("电冰箱")
Names2.Add("456")
Names2.Add("洗衣机")

Dim ls = Functions.Execute("交集", names, names1, names2)
msgbox(String.join(",", ls.toarray))