C# Permutation of an array of arraylists?

后端 未结 13 911
难免孤独
难免孤独 2020-11-27 18:10

I have an ArrayList[] myList and I am trying to create a list of all the permutations of the values in the arrays.

EXAMPLE: (all values are strings)

         


        
13条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-11-27 18:47

    Non-recursive solution:

    foreach (String s1 in array1) {
        foreach (String s2 in array2) {
            foreach (String s3 in array3) {
                String result = s1 + " " + s2 + " " + s3;
                //do something with the result
            }
        }
    }
    

    Recursive solution:

    private ArrayList permute(ArrayList> ar, int startIndex) {
        if (ar.Count == 1) {
            foreach(String s in ar.Value(0)) {
                ar.Value(0) = "val" + startIndex + "=" + ar.Value(0);
            return ar.Value(0);
        }
        ArrayList ret = new ArrayList();
        ArrayList tmp1 ar.Value(0);
        ar.remove(0);
        ArrayList tmp2 = permute(ar, startIndex+1);
        foreach (String s in tmp1) {
            foreach (String s2 in tmp2) {
                ret.Add("val" + startIndex + "=" + s + " " + s2);
            }
        }
        return ret;
    }
    

提交回复
热议问题