我正在阅读关于多项式的链表实现。它说,
Compare this representation with storing the same
polynomial using an array structure.
In the array we have to have keep a slot for each exponent
of x, thus if we have a polynomial of order 50 but containing
just 6 terms, then a large number of entries will be zero in
the array.
我想知道我们如何在数组中表示多项式?请指导我。
由于
答案 0 :(得分:4)
基于数组的多项式的完整Java实现在这里:http://www.cs.lmu.edu/~ray/classes/dsa/assignment/2/answers/
基本思想是如果你有像
那样的多项式4x^6-2x+5
然后你的数组看起来像
0 1 2 3 4 5 6
+----+-----+----+----+----+----+----+
| 5 | -2 | 0 | 0 | 0 | 0 | 4 |
+----+-----+----+----+----+----+----+
那是
你可能会看到这种表现对于像
这样的多项式是多么浪费3x^5000 + 2
在这种情况下,您需要使用稀疏数组表示。最简单的方法是使用一个map(字典),其键是exponoents,其值是系数。
答案 1 :(得分:1)
假设你的多项式是
6x^50 + 4x^2 + 2x + 1
您发布的段落描述的是将其存储在如下数组中:
polynomial = new array(50) // I'm assuming all elements initialize to zero
polynomial[50] = 6
polynomial[2] = 4
polynomial[1] = 2
polynomial[0] = 1
基本上它以这种方式浪费了很多空间。这里的数组索引是x中多项式的x的“幂”。
答案 2 :(得分:1)
通常你为每个指数保留一个元素,所以多项式实际上是:
poly[0]*x^0 + poly[1]*x^1 + ... + poly[n-1]*x^(n-1)
。如果你有p(x) = 3x^5+5x^2+1
,你的数组将是:
poly[0] = 1
poly[1] = 0
poly[2] = 5
poly[3] = 0
poly[4] = 0
poly[5] = 3
答案 3 :(得分:1)
如果你有像
那样的多项式函数3x^4 + x^2 + 2x + 1 = 0
您可以在数组中将其表示为
[1 2 1 0 3]
因此,元素0是x ^ 0的系数,元素1是x ^ 1的系数,依此类推......