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

What's the correct data structure for given C# code

本文关键字:数据结构 是什么 代码 给定      更新时间:2023-10-16

以下是相等子集数字分区问题。

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

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

任何人都可以建议更好的数据结构,使其与程序相似且灵活C++

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

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

C++数组到 C# 的大多数 1:1 端口将是(正如您已经发现的那样)

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

一旦您更正了原始解决方案中的索引问题,这将起作用。