任意の数の順序付きリストが与えられた場合
List<int> list1 = new List<int> {1, 1, 2};
List<int> list2 = new List<int> {1, 2, 3, 4};
List<int> list3 = new List<int> {1, 2};
List<int> listN = new List<int> {....,....};
各組み合わせの合計が昇順になるように、リストの組み合わせを見つけたいです。例えば、
{1, 1, 1} = 3, where {1 (1st element of list1), 1 (1st element of list2), 1 (1st element of list3)}
{1, 1, 1} = 3, where {1 (2nd element of list1), 1 (1st element of list2, 1 (1st element of list3)}
{1, 2, 1} = 4
{1, 1, 2} = 4
{2, 1, 1} = 4
...
合計を昇順で求める理由は、最初の M 個の組み合わせ (たとえば、上記の M = 5) だけを計算できるようにするためです。
私の現在の考えは、 List<List<int>> の組み合わせ で説明したように、現在の要素と次の要素の差が 0 であるリストの小さなサブセットから始めることで、すべてのリストの組み合わせを見つけることを何とか拡張することです。
List<int> tempList1 = new List<int> {1, 1};
List<int> tempList2 = new List<int> {1};
List<int> tempList3 = new List<int> {1};
すべての組み合わせを見つけてから、差が最も小さい次の要素をリストに追加します
List<int> tempList1 = new List<int> {1, 1, 2};
List<int> tempList2 = new List<int> {1, 2};
List<int> tempList3 = new List<int> {1, 2};
そこからソリューションセットを構築します。
これは可能ですか、これを行うためのより良い方法はありますか?