我想不出一个简洁的方法来做以下事情(我用的是C):
给定多个变量n和最大度d,我要生成相应的多项式。
例如,如果n=4,d=3,我希望生成以下内容:x4 x3 x2+x4 x3 x1+x4 x2 x1+x3 x2 x1+x4 x3+x4 x2+x4 x1+x3 x1+x2 x1+x2 x1+x4+x3
每个xn都是不同的变量多项式从3的最大阶开始,经过所有这些单项式,然后经过所有求积,然后是线性。这对任何阳性的n和d都有效。
我可以用一些嵌套的while循环和int来硬编码,跟踪每个变量,这样我就可以让它工作但我需要概括一下,我不知道怎么做,至少不能没有一个巨大的while或for循环的质量。
所以,我的问题是,用一种非常普遍的方式,按正确的顺序,生成这些变量的好方法是什么谢谢。

最佳答案

您似乎需要变量的power set(所有子集的集合)的筛选子集,按度数进行筛选。
Rosetta Code时,有两个C示例来生成发电机组修改它应该很容易,将其限制为给定顺序的子集。(我假设您不希望重复使用x2x4^2等术语。)
例如,起始集是{x1,x2,x3,x4},多项式的项是由3阶或更低阶的子集构成的。
这个问题类似于How to find all possible subsets of a given array?

关于c - 按最大次数生成多项式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4824095/

10-09 13:11