以下是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 ++程序类似且更加灵活
答案 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
一旦您纠正了原始解决方案中的索引问题,这将立即生效。