Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成系数为0或1且给定阶数为n的所有多项式_C#_Cryptography_Algebra_Polynomials_Abstract Algebra - Fatal编程技术网

C# 生成系数为0或1且给定阶数为n的所有多项式

C# 生成系数为0或1且给定阶数为n的所有多项式,c#,cryptography,algebra,polynomials,abstract-algebra,C#,Cryptography,Algebra,Polynomials,Abstract Algebra,我试图在“C#”中列举所有给定度的可能多项式。是否有任何算法可以枚举给定n次的所有可能多项式?也许我不知道如何准确地问这个问题,但以下是一些例子: 例如: 对于n=1: x+1 return [1 1] x return [1 0] 对于n=2: x^2+x+1 return [1 1 1] x^2+x return [1 1 0] x^2 return [1 0 0] x^2+1 return [1 0 1] 对于n=3: x^3

我试图在“C#”中列举所有给定度的可能多项式。是否有任何算法可以枚举给定n次的所有可能多项式?也许我不知道如何准确地问这个问题,但以下是一些例子:

例如:

对于n=1:

x+1    return [1 1]
x      return [1 0]
对于n=2:

x^2+x+1  return [1 1 1]
x^2+x    return [1 1 0] 
x^2      return [1 0 0]
x^2+1    return [1 0 1] 
对于n=3:

x^3           return [1 0 0 0]
x^3+x^2       return [1 1 0 0]
x^3+x         return [1 0 1 0]
x^3+x^2+x     return [1 1 1 0]
x^3+1         return [1 0 0 1]
x^3+x^2+1     return [1 1 0 1]
x^3+x+1       return [1 0 1 1]
x^3+x^2+x+1   return [1 1 1 1]

任何伪代码或算法都会有所帮助

设置最左边的位,然后对右边的n位执行二进制计数器。实际上,需要n+1位来解释x^0(在我的第一次尝试中,我的值为1)

您可以生成如下所示的枚举:

IEnumerable<int[]> GenPolys(int n)
{
    int[] a = new int[n + 1];
    a[0] = 1;
    bool ok = true;
    while (ok)
    {
        yield return a;
        ok = false;
        for (int i = 1; i < a.Length; i++)
        {
            a[i] = 1 - a[i]; // flip the ith bit
            if (a[i] == 1)
            {
                ok = true;
                break;
            }
        }
    }
}

你在找{x的⁰, xü,…,xⁿ}.我认为一个二进制计数器在右边的n-1位?@Ryan我认为,如果幂设置为开,假设n=2,我也会有[0 1 0],它是“x”,不是n的顺序=2@dana我认为你的观点是正确的,但我不能很好地理解它!你能详细说明一下吗?或者是一个伪代码?@Rebin:x^0…x^(n)的幂集− 1) 那么,每个结尾都有x^n。谢谢。让我来做。
foreach (int[] poly in GenPolys(4))
{
    // your code here
}