var _array = new int[] { -4, -2, -1, 1, 2, 4 };
var keepPerms = new List<List<int>>();
var _l = new List<int>();
var c = 0;
while (c != 2)
{
for (int i = 0;i < _array.Length; i )
{
_l.Add(_array[i]);
List<int> _sort = _l.OrderBy(s => s).ToList();
if (!keepPerms.Contains(_sort))
keepPerms.Add(_sort);
}
_l.Clear();
c ;
}
foreach (var item in keepPerms)
{
{
Console.WriteLine(String.Join(" ", item));
}
Console.WriteLine();
}
Console.WriteLine();
我得到的輸出:
-4
-4 -2
-4 -2 -1
-4 -2 -1 1
-4 -2 -1 1 2
-4 -2 -1 1 2 4
-4
-4 -2
-4 -2 -1
-4 -2 -1 1
-4 -2 -1 1 2
-4 -2 -1 1 2 4
我需要的輸出:
-4
-4 -2
-4 -2 -1
-4 -2 -1 1
-4 -2 -1 1 2
-4 -2 -1 1 2 4
這是一個方法原型,我需要在其中找到一些序列的子集。主要問題是,在執行此方法后,我得到了子集的副本。盡管我呼叫了很多次,有什么方法可以獲取串列的原始值?你能建議更好的方法來找到串列的原始值嗎?
uj5u.com熱心網友回復:
List.Contains() 使用默認的相等比較器。List<int> a == List<int> b僅當它是相同的物件時。您應該使用自定義相等比較器Contains()或使用Any SequenceEqual:
if (!keepPerms.Any(item => item.SequenceEqual(_sort)))
keepPerms.Add(_sort);
uj5u.com熱心網友回復:
由于條件while(c != 2),您會得到兩個結果,您可以將其切換為while(c != 1)并且可以作業,或者您可以洗掉 while ,因為這對您的情況沒有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434661.html
上一篇:找到可能的最低分數
下一篇:想知道演算法的時間復雜度
