C++实现多项式相乘算法

本文介绍一个使用 C++ 编写的函数 mul,用于实现两个多项式 p1p2 的相乘操作。

#include <iostream>
#include <vector>

typedef struct {
    int coef; // 系数
    int exp;  // 指数
} Term;

typedef std::vector<Term> Poly;

Poly mul(Poly p1, Poly p2) {
    Poly result;

    for (int i = 0; i < p1.size(); i++) {
        for (int j = 0; j < p2.size(); j++) {
            Term term;
            term.coef = p1[i].coef * p2[j].coef;
            term.exp = p1[i].exp + p2[j].exp;
            result.push_back(term);
        }
    }

    // 对结果多项式进行合并相同指数项的操作
    for (int i = 0; i < result.size() - 1; i++) {
        for (int j = i + 1; j < result.size(); j++) {
            if (result[i].exp == result[j].exp) {
                result[i].coef += result[j].coef;
                result.erase(result.begin() + j);
                j--;
            }
        }
    }

    return result;
}

这个函数使用了 C++ 中的向量 (vector) 来表示多项式。多项式被定义为一个包含多个项 (Term) 的向量。每个项包含两个整数字段,coef 表示系数,exp 表示指数。

函数接受两个参数,分别是多项式 p1p2。函数通过两个循环嵌套遍历两个多项式的项,并将对应的项相乘得到新的项,包括乘积的系数和指数,并将结果加入到结果多项式 result 中。

最后,函数对结果多项式进行合并相同指数项的操作。遍历结果多项式中的每一项,如果存在相同指数的项,则将它们的系数相加,并删除后面的重复项。

需要注意的是,该函数假设系数和指数均为整数类型。您可以根据实际情况进行修改和优化。

C++实现多项式相乘算法

原文地址: https://www.cveoy.top/t/topic/hYN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录