两个一元多项式相乘的算法

不是程序,就是用基本操作组合起来的那种,要用链表储存的... 不是程序,就是用基本操作组合起来的那种,要用链表储存的 展开
 我来答
Grooooooove
2013-09-20
知道答主
回答量:3
采纳率:0%
帮助的人:5.4万
展开全部
把一个多项式的系数存在数组a里.a[i]表示x^i的系数

把另一个多项式的系数存在数组b里.b[i]表示x^i的系数
那么 for i = 1 to n for j = 1 to m c[i+j] += a[i] * b[j] //代表ax^i * bx^j = ab * x^(i+j)
c数组就存储了答案多项式的系数。
更多追问追答
追问
要用链表,而且乘完以后还要排序,帮我写一下具体算法嘛,大神
追答

您用链表是神马心态……如果单纯是练习链表的话还是写最经典的约瑟夫问题吧。

这题用链表好像挺麻烦。其实数组就是存储地址相邻的链表.

如果要考察对地址的理解,那还是写成这样吧……

简化了读入,您可以把您的需求说的具体点

#include <cstdio>
#include <cstdlib>
int main()
{
    int n, m;
    scanf("%d%d", &n, &m);
    int a[1000];
    int b[1000];
    for (int i = n; i >= 0; --i) scanf("%d", a+i);
    for (int i = m; i >= 0; --i) scanf("%d", b+i);
    int c[2000];
    for (int i = 0; i <= n; ++i)
        for (int j = 0; j <= m; ++j)
            *(c+i+j) += *(a+i) * *(b+j);
    for (int i = n+m; i > 0; --i) 
        if (*(c+i))
           if (*(c+i) == 1)
              printf("x^%d + ", i);
           else
              printf("%dx^%d + ", *(c+i), i);
    printf("%d\n", *c);
    
    system("pause");
    return 0;
}
heaven兮小颜
2013-09-20
知道答主
回答量:7
采纳率:0%
帮助的人:6万
展开全部
直接计算两个一元多项式相乘的系数需要O(n2)的运算量。本文介绍了一种超快的算法——用快速傅立叶变换实现两个一元多项式相乘的快速算法。该算法是通过快速傅立叶变换、快速傅立叶变换逆变换以及卷积来实现的,其运算量为O(nlog2n)。
追问
算法呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式