C++实现多项式相乘算法
C++实现多项式相乘算法
本文介绍一个使用 C++ 编写的函数 mul,用于实现两个多项式 p1 和 p2 的相乘操作。
#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 表示指数。
函数接受两个参数,分别是多项式 p1 和 p2。函数通过两个循环嵌套遍历两个多项式的项,并将对应的项相乘得到新的项,包括乘积的系数和指数,并将结果加入到结果多项式 result 中。
最后,函数对结果多项式进行合并相同指数项的操作。遍历结果多项式中的每一项,如果存在相同指数的项,则将它们的系数相加,并删除后面的重复项。
需要注意的是,该函数假设系数和指数均为整数类型。您可以根据实际情况进行修改和优化。
原文地址: https://www.cveoy.top/t/topic/hYN 著作权归作者所有。请勿转载和采集!