vb

时间:2016-01-16 05:02:56

标签: vba

我想在程序中组合数组。以这些为例:

a = {1,2,3,4,5}
b = {6,7,8,9,10}

这应该产生一个数组,其中包含第一个数组的第一个元素,第二个数组的所有元素除了第一个元素,即{1,7,8,9,10}。这应该继续用于所有可能的组合,产生这些输出数组:

{1,7,8,9,10} {6,2,8,9,10} {6,7,3,9,10} {6,7,8,4,10} {6,7,8,9,5}...  

对于带有第二个数组的第一个数组的2,3,4个元素

{1,2,8,9,10} {6,2,3,9,10} {6,7,3,4,10} {6,7,8,4,5} {1,7,8,9,5}...   
{1,7,3,9,10} {6,2,8,4,10} {6,7,3,9,5} {1,7,8,4,10}.....

,反之亦然,第二阵列。

对于我尝试的第一个组合:

For I = 0 To 4 
'first array loop 
    For J = 0 To 4 
    'second array loop 
        If I <> J Then 
           arr(J) = arr2(J) 
        Else 
           arr(J)=arr1(J) 
        End If 
    Next 
Next

1 个答案:

答案 0 :(得分:3)

这将为您提供所有可能的组合:

ins = xero.Contact.find("3034b40e-ddd5-45b4-b23c-0f6800029673")   

你会这么称呼:

public void highScore ()
{
    int highScore = 0;
    String line = "";
    int x = 0;
    try
    {
        BufferedReader reader = new BufferedReader (new FileReader ("highScores.txt"));
        while ((line = reader.readLine ()) != null)                 // read the score file line by line
        {
            x++;

        }
        reader.close ();
    }
    catch (IOException ex)
    {
        System.err.println ("ERROR reading scores from file");
    }
    int[] y = new int [x];
    int b = 0;
    try
    {
        BufferedReader reader = new BufferedReader (new FileReader ("highScores.txt"));
        while ((line = reader.readLine ()) != null)                 // read the score file line by line
        {
            int d = Integer.parseInt (line);
            y [b] = d;
            b++;
        }
        reader.close ();
    }
    catch (IOException ex)
    {
        System.err.println ("ERROR reading scores from file");
    }
    int tempVar;
    for (int i = 0 ; i < y.length - 1 ; i++)
    {
        for (int j = 0 ; j < y.length - 1 ; j++)
        {
            if (y [i] < y [j])
            {
                tempVar = y [j + 1];
                y [j + 1] = y [i];
                y [i] = tempVar;
            }
        }
    }
    for (int i = 0 ; i < y.length - 1 ; i++)
    {
        c.println (y [i]);
    }
}

它将在活动工作表上输出,这个:

enter image description here

这也具有动态的优点。您可以使用两个以上的数组。唯一的规则是他们需要具有相同数量的值。

唯一的其他限制是工作表上的行数。所以(数组的数量)^(值的数量)不能超过2 ^ 20。