两个阵列的组合



我有一个整数数组,显示路径的节点:{1,2,3,4,5}
1-->2->3-->4->5

但该路径的某些节点可以是可选的。例如,节点4是可选的。所以,我可以使用这个路径1-->2-->3-->4-->5或者这条路径1-->2-->3-->5到达我的目的地。

我要生成所有路径组合。//ProduceCombinations(int[]path,int[]possibleNodes(

{1*,2,3,4*,5*}

12345

开始:

static void Main(string[] args)
{
int[] pathNodes = new int[] {1,2,3,4,5};
int[] optionalNodes = new int[] { 1, 4, 5 };
List<int[]> combies = ProduceCombinations(pathNodes, optionalNodes);
}
public static List<int[]> ProduceCombinations(int[] PathNodes, int[] OptionalNodes)
{
List<int[]> results = new List<int[]>();
results.Add((int[])PathNodes.Clone());
int index = 0;
for (int j = 0; j < OptionalNodes.Length; j++)
{
while (PathNodes[index] < OptionalNodes[j]) index++;
int lenght = results.Count;
for(int i = 0; i < lenght; i++)
{
var newSol = (int[])results[i].Clone();
newSol[index] = 0;
results.Add(newSol);
}
}
return results;
}

最新更新