日期:2014-05-17  浏览次数:20822 次

80分求一个数组分组问题
MyArray( '2007001 ', '2007001 ', '2007001 ', '2007002 ', '2007002 ', '2007003 ')
怎么才能得到下面的结果呢?
ResultArray(0)= '2007001-2007001-2007001 '
ResultArray(1)= '2007002-2007002 '
ResultArray(2)= '2007003 '

昨晚到现在都不知道怎么个写法郁闷哦!

------解决方案--------------------
Dim B(), a, n
n = 0
a = Array( "2007001 ", "2007001 ", "2007001 ", "2007002 ", "2007002 ", "2007003 ")
ReDim Preserve B(n)
B(n) = a(0)
For i = 1 To UBound(a)
If a(i) = a(i - 1) Then
B(n) = B(n) & "- " & a(i)
Else
n = n + 1
ReDim Preserve B(n)
B(n) = a(i)
End If
Next
For i = 0 To UBound(B)
response.write B(i) & " <br> "
Next
------解决方案--------------------
按楼上的方法在数组是 :
MyArray( '2007001 ', '2007001 ', '2007001 ', '2007002 ', '2007002 ', '2007003 ')
的情况下是可以实现的,但我认为楼主的意思应该是找出重复的项.如果数组中元素位置换下.换成
MyArray( '2007001 ', '2007003 ', '2007001 ', '2007002 ', '2007002 ', '2007001 ')
这样的话,似乎按楼上的方法就不能实现.
------解决方案--------------------
说一下我的思路:
设俩中间数组appered(m) 和 count(m),appered(x)表示MyArray(n)中出现过的某元素,count(x)是其计数。对MyArray(n)中的每个元素:如果能在appered(m)数组中找到,则将对应的count值加1;如果没有找到,则在appered数组中增加一个元素,count数组也增加一个相应的元素,值为1。最后根据appered(m) 和 count(m)就能很容易的生成ResultArray(m)