可能な解決法。
ソート各リストと10ビットの2進数に変換
例えば
リスト1つの
9 8 7 6 5 4 3 2 1 0
N N Y Y Y Y N N Y Y = 243
リストつ
9 8 7 6 5 4 3 2 1 0
Y Y N Y N N Y Y Y N = 846
リスト三
9 8 7 6 5 4 3 2 1 0
N N Y Y Y Y Y N Y N = 250
ペア
の事前生成可能なすべての値
0,1 = 3
0,2 = 5
...
1,5 = 34
...
5,7 = 160
...
8,9 = 768
すなわち値とカウントのリストを作成します(私は容易にするためにペアのテキスト表現を含めました)
public class Details {
public string Pair { get; set; }
public int Value { get; set; }
public int Count { get; set; }
}
// selection only
public readonly static List<Details> PairDetails = new List<Details>() {
new Details{Pair = "0,1", Value = 3},
new Details{Pair = "0,2", Value = 5},
new Details{Pair = "1,5", Value = 34},
new Details{Pair = "1,6", Value = 66},
new Details{Pair = "2,3", Value = 12},
new Details{Pair = "4,5", Value = 48}
};
は、これはあなたのリストに倍の大半量を発生するすべてのペアのリストを与えるペアとリスト
foreach (var details in PairDetails) {
foreach (var value in values) {
if ((value & details.Value) == details.Value) {
details.Count++;
}
}
}
var most = PairDetails.Where(dtls => dtls.Count == PairDetails.Max(dt => dt.Count)).ToList();
を反復します。
hth、
アラン。
あなたは疲れました&&このコンテキストでは「ペア」は何を意味しますか? – soulcheck
これはどんなプログラミング言語ですか? – ChrisBD
C#でこれをしたいです。 – onurbaysan