给定C#代码的正确数据结构是什么

时间:2017-01-09 09:22:52

标签: c# c++

以下是Equal subset Number Partitioning问题。

我的目标是不只是得到布尔结果,表明解决方案是否可行(如上面的链接所示),还要找到相关的子集。

以下是C++ solution(使用Ideone),它使用一个数组,它的大小是C ++的动态,但当我将其转换为C# solution时,我的挑战是使用正确的数据结构,因为int[]List<int>都不能用于C# solution Main中可以看到的相同目的,我为数组大小取一个值并仅填充n-2 th index,但是将第n-1个索引保留为默认值0,否则它将导致index out of range exception

任何人都可以提出更好的数据结构,使其与C ++程序类似且更加灵活

1 个答案:

答案 0 :(得分:2)

正如评论中所讨论的,您的混淆的根源在于,您的C ++解决方案正在访问大小为n的数组中的索引n,这会导致未定义的行为(这一次,它正在运行而没有报告任何错误。)

此外,创建C ++数组的方式是GCC特定的语言扩展。

C#数组的大部分1:1端口都是(正如您已经发现的那样)

int solution[n]; // C++ language extension
int[] solution = new int[n]; // C#, cleanup is handled by GC

一旦您纠正了原始解决方案中的索引问题,这将立即生效。