有三个数组n(i),m(i),p(i)
    值    1     2     3      如何根据n(i)中不同的值的个数(本例中为3)建立另外一个数组如:a(个数)存放1,2,3
          1     3     4      可知每个a(i)中有三个值,这三个值也要随a(i)的不同重新建立数组存放,该如何编
          1     5     6      程?各位大虾,谢谢 !
          2     3     4
          2     4     5
          2     6     5
          3     4     5
          3     5     6 
          3     7     8

解决方案 »

  1.   

    说简单点就是,将n(i)中相同的值放在一块,付给一个新数组,n(i)中有几个不同的值就新建几个新数组
      

  2.   

    我是这样认为的,原始数据分成三组,n(i),m(i),p(i)就是每组里的第一个位置,第二个位置,第三个位置的数,是这样?a(i)表示每组数,且有三个值,这样的数组应该不可以吧,我觉得是定义一个二维数组,     a(i,j),a(1,1)是第一组第一个,a(1,2)第一组第二个,a(1,3)第三个,以此类推吧。
      

  3.   

    没看明白百度下 K mean 算法是否是你要的
      

  4.   

    定义一个二维数组并不好实现你要的结果。参考以下程序:Private Sub Command1_Click()    Dim a(1 To 3), a1, n1, s
        Dim n, m, p, f As Boolean
        Dim i As Integer, j As Integer
        
        n = Array(1, 1, 2, 2, 2, 3, 3, 3)
        m = Array(3, 5, 3, 4, 6, 4, 5, 7)
        p = Array(4, 6, 4, 5, 5, 5, 6, 8)
        
        n1 = n
        GoSub prg1
        a(1) = a1
        n1 = m
        GoSub prg1
        a(2) = a1
        n1 = p
        GoSub prg1
        a(3) = a1
        
        For i = 1 To 3 '验证数据,观察立即窗口
            For j = 0 To UBound(a(i))
                Debug.Print a(i)(j); " ";
            Next
            Debug.Print
        Next
        
        Exit Sub
        
    prg1:
        For i = 0 To UBound(n1)
            For j = i + 1 To UBound(n1)
                If n1(i) = n1(j) Then
                   f = True: Exit For
                End If
            Next
            If Not f Then
               s = s & n1(i) & ","
            End If
            f = False
        Next
        s = Left(s, Len(s) - 1)
        a1 = Split(s, ",")
        s = ""
    Return
               
    End Sub