我想&#34;洗牌&#34;在某种程度上Tuple<bool,int[]>[]
,但我不需要完全洗牌我想切换第一个的位置与第二个切换第一个的位置与第三个,即第一个应切换到所有地方除了第二个元组之外的其他元组应该这样做。我会尝试用彩票中的一些简单数字来解释它:
我们有1,2,3让我们假设那些是我的3元组:
这就是我想要用我的元组实现的目标:
Tuple<bool, int[]>[] hodove =
{
new Tuple<bool, int[]>(Nadqsno(red, 1) && Napred(kolona, 2), new[]
{
count++,
novMinatRed = red + 1,
novaMinataKolona = kolona + 2
}),
new Tuple<bool, int[]>(Nadqsno(red, 2) && Napred(kolona, 1), new[]
{
count++,
novMinatRed = red + 2,
novaMinataKolona = kolona + 1
}),
new Tuple<bool, int[]>(Nalqvo(red, 1) && Napred(kolona, 2), new[]
{
count++,
novMinatRed = red - 1,
novaMinataKolona = kolona + 2
}),
new Tuple<bool, int[]>(Nalqvo(red, 2) && Napred(kolona, 1), new[]
{
count++,
novMinatRed = red - 2,
novaMinataKolona = kolona + 1
}),
new Tuple<bool, int[]>(Nadqsno(red, 2) && Nazad(kolona, 1), new[]
{
count++,
novMinatRed = red + 2,
novaMinataKolona = kolona - 1
}),
new Tuple<bool, int[]>(Nalqvo(red, 2) && Nazad(kolona, 1), new[]
{
count++,
novMinatRed = red - 2,
novaMinataKolona = kolona - 1
}),
new Tuple<bool, int[]>(Nadqsno(red, 1) && Nazad(kolona, 2), new[]
{
count++,
novMinatRed = red + 1,
novaMinataKolona = kolona - 2
}),
new Tuple<bool, int[]>(Nalqvo(red, 1) && Nazad(kolona, 2), new[]
{
count++,
novMinatRed = red - 1,
novaMinataKolona = kolona - 2
}),
};
答案 0 :(得分:0)
如果您想要的是字符串的所有排列,您可以使用交换算法,例如找到的here
使用元组数组
而不是字符串答案 1 :(得分:0)
您是否尝试通过逐步交换阵列中的元素来枚举所有排列?类似Heap's algorithm的内容?