Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两个阵列的组合_C#_Arrays - Fatal编程技术网

C# 两个阵列的组合

C# 两个阵列的组合,c#,arrays,C#,Arrays,我有一个显示路径节点的整数数组:{1,2,3,4,5} 1-->2-->3-->4-->5 但此路径的某些节点可以是可选的。 例如,节点4是可选的。 因此,我可以使用路径1-->2-->3-->4-->5 或通过此路径1-->2-->3-->5到达我的目标 我要生成所有路径组合。 //产品组合(int[]路径,int[]可能节点) {1*,2,3,4*,5*} 12345 -2345 123-5 -23-5 1234- -234- 123-- -23-- 12345 -2345 123-5 -2

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

但此路径的某些节点可以是可选的。 例如,节点4是可选的。 因此,我可以使用路径1-->2-->3-->4-->5 或通过此路径1-->2-->3-->5到达我的目标

我要生成所有路径组合。 //产品组合(int[]路径,int[]可能节点)

{1*,2,3,4*,5*} 12345
-2345
123-5
-23-5
1234-
-234-
123--
-23--
12345
-2345
123-5
-23-5
1234-
-234-
123--
-23--

给你:

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;
        }
static void Main(字符串[]args)
{
int[]路径节点=新的int[]{1,2,3,4,5};
int[]optionalNodes=newint[]{1,4,5};
列表组合=产品组合(路径节点、可选节点);
}
公共静态列表产品组合(int[]路径节点,int[]可选节点)
{
列表结果=新列表();
添加((int[])PathNodes.Clone());
int指数=0;
对于(int j=0;j
什么是结果类型?结果类型可以是数组列表或2D数组。您能否将您已经尝试过的内容添加到您的问题中,以便我们可以在此基础上进行构建,而不是完全改变您的方法。您想要一个算法吗?Stackoverflow不是代码服务站点。展示你的努力。解释这个问题,我们可以试着帮你纠正它。此外,请阅读并更好地了解本网站的工作原理,结果将重复。您应该发布一些代码(以及更多注释)来解释该过程。感谢Aldert的帮助,您的逻辑适用于有序数组。