zoukankan      html  css  js  c++  java
  • 数据结构与算法分析 3.7

    思路

            <1>对于p(x)中的每一个因式,与q(x)中每一个因式相乘的结果,保存于另外的链表中;

            <2>对于保存结果的链表排序,并去重,即去除系数相同的因式结点,但系数相加 

    代码

    #include <list>
    using namespace std;
    
    struct Node
    {
        int coefficient = 0;
        int exponent = 0;
    };
    bool compfn(const Node &lhs, const Node &rhs) { return lhs.exponent > rhs.exponent; }
    
    list<Node> MultiplyPolynomial(list<Node> &polyFirst, list<Node> &polySecond)
    {
        list<Node> polyProd;
    
        for (auto i = polyFirst.cbegin( ); i != polyFirst.cend( ); ++ i)
        {
            for (auto j = polySecond.cbegin( ); j != polySecond.cend( ); ++ j)
            {
                Node prod;
                prod.coefficient = i->coefficient * j->coefficient;
                prod.exponent = i->exponent + j->exponent;
                polyProd.push_back(prod);
            }
        }
        polyProd.sort(compfn);
    
        if (polyProd.size() > 1)
        {
            auto i = polyProd.begin( );
            while (i != polyProd.end())
            {
                auto j = i;
    
                if (++j != polyProd.end() && i->exponent == j->exponent)
                {
                    i->coefficient += j->coefficient;
                    polyProd.erase(j);
                }
                else
                    ++i;
            }
        }
        return polyProd;
    }
  • 相关阅读:
    20071020ー胡小蝶
    20071018feeling
    20071020——今日起倒计时——我们的约定
    XPath对象选择器
    DIV与SPAN之间有什么区别
    SQL注入(一)
    Java平台AOP技术研究
    AOP技术基础
    AOP——引言
    .Net平台AOP技术研究
  • 原文地址:https://www.cnblogs.com/tallisHe/p/4213881.html
Copyright © 2011-2022 走看看