我正在尝试对我的 TI-83 进行编程以进行子集总和搜索。所以,给定一个长度为 N 的列表,我想找到所有给定长度 L 的列表,总和为给定值 V。
这与常规子集和问题有点不同,因为我只搜索给定长度的子集,而不是所有长度,并且递归不一定是首选,因为我无法调用我正在工作的程序。
我可以使用嵌套循环轻松完成任务,但是对于大于 5 的 L 值,这变得很麻烦。我正在尝试动态解决方案,但没有得到任何结果。
真的,在这一点上,我只是想让列表引用正确,所以这就是我正在寻找的。让我们举个例子:
L1={p,q,r,s,t,u}
所以
N=6
让我们寻找长度为 3 的所有子集以使其相对较短,因此 L = 3(6c3 = 20 个总输出)。
理想情况下,要搜索的列表引用是:
{1,2,3}
{1,2,4}
{1,2,5}
{1,2,6}
{1,3,4}
{1,3,5}
{1,3,6}
{1,4,5}
{1,4,6}
{1,5,6}
{2,3,4}
{2,3,5}
{2,3,6}
{2,4,5}
{2,4,6}
{2,5,6}
{3,4,5}
{3,4,6}
{3,5,6}
{4,5,6}
显然是通过以下方式完成的:
FOR A,1,N-2
FOR B,A+1,N-1
FOR C,B+1,N
display {A,B,C}
END
END
END
我最初对 N 的数据进行降序排序,这允许我搜索缩短搜索的条件,并且当我在循环中增加 A、B 和 C 的值时,使用 FOR 循环在不同的地方把它搞砸了。
我也在寻找更好的动态解决方案。我已经在网络上进行了一些研究,但我似乎无法根据我的特定情况调整那里的内容。
任何帮助,将不胜感激。我试图保持足够简短,以免写小说,而是解释我想要了解的内容。我可以根据需要提供更多详细信息。