我有一个包含10个项目的列表。我试图输出到控制台的每个可能的配对2.但它不能与自己配对。例如 1,2 1,3 1,4等......
我发现这可以找到列表中的所有可能组合。有人可以帮我修改吗?
private static void GetCombination(IList list)
{
var count = Math.Pow(2, list.Count);
for (var i = 1; i <= count - 1; i++)
{
var str = Convert.ToString(i, 2).PadLeft(list.Count, '0');
for (var j = 0; j < str.Length; j++)
{
if (str[j] == '1')
{
Console.Write(list[j]);
}
}
Console.WriteLine();
}
}
答案 0 :(得分:1)
因此,如果您有1到10的列表,则需要1,2
1,3
1,4
... 1,10
- 2,1
2,3
.. 2,10
等等。
您只需使用气泡并检查第一个索引是否与第二个索引不同。
有关更多说明,请参阅以下示例:
List<int> mylist = new List<int>(new int[] { 1,2,3,4,5,6,7,8,9 });
GetCombination(mylist);
private static void GetCombination(IList<int> values)
{
for (int i = 0; i < values.Count; i++)
{
for (int j = 0; j < values.Count; j++)
{
if (i != j)
{
Console.WriteLine(values[i] + " " + values[j]);
}
}
}
}
答案 1 :(得分:0)
这是一个很容易的问题。添加@FirstOne的答案 您还可以返回包含该函数中所有组合的List: 列表mylist = new List(new int [] {1,2,3,4,5,6,7,8,9}); GetCombination(MYLIST);
public static IList<Tuple<int,int>> GetCombination(IList<int> values)
{
List<Tuple<int,int>> _temp=new List<Tuple<int, int>>();
for (int i = 0; i < values.Count; i++)
{
for (int j = 0; j < values.Count; j++)
{
if (i != j)
{
_temp.Add(Tuple.Create(i, j));
}
}
}
return _temp;
}