C++实现多项式相乘

C++多项式相乘

C++实现多项式相乘_第1张图片

 

C++实现多项式相乘_第2张图片

C++实现多项式相乘_第3张图片

#include 
using namespace std;
int a[2][2]; //二维数组开的秒
int b[2][2];
int ans[25]; //用来存放系数,那么存放后所对应的下标就是指数
int main(){
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            cin >> a[i][j];
        }
    }
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            cin >> b[i][j];
        }
    }
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            ans[a[i][1] + b[j][1]] += a[i][0] * b[j][0];
            //幂次就是对应的下标
        } //累加的原因是,因为是两个相加的式子相乘,所以要合并幂次相同的项
    }
    for(int i = 20;i>=0;i--){
        if(ans[i] != 0){
            cout << ans[i] << " " << i << endl;
        }
    }
    return 0;
}

C++多项式的乘法和加法

多项式的乘法和加法

采用动态数组的方法

该方法较链式方法略微复杂

#include
   using namespace std;
   //多项式的乘法和加法
   struct node{
    int coef;
    int exp;
   };
   
    //****排序****
 void  nodesort(node* pn,const int& count)
 {   if(count<=1) return;
  else{
  bool flag =false;
  for(int i=0;i1 && key==0){//排序并且合并 
   nodesort(s,n); 
   int count=0;
  for(int i=1;i1&&key==1){//仅合并 
   //nodesort(s,n); 
   int count=0;
  for(int i=1;ia[j].exp){
       newnode[temp].coef = s[i].coef;
       newnode[temp].exp = s[i].exp;
       temp++;
       i++;
       
      }
      
    else if(s[i].exp>seq[i/2].coef;
     else cin>>seq[i/2].exp;
   } 
   return seq;
 }  
  
    //***销毁****
 void delete_node(node*s){
  delete[] s;
 } 


//**测试**
 int main(){
    //m,n表示输入的节点个数
  //示例:3x^6+4x^4+x 输入的个数为3,每个节点分别为:3 6; 4 4; *1 *1 
    int m,n;
    int temp;
    node* seq1,*seq2;
    
    cout<<"input m value:";
       cin>>m;
       seq1 = node_input(m); 
       
       cout<<"input n value:";
       cin>>n;
       seq2 = node_input(n); 
     
      //***排序并且合并*** 
      m=nodemerge(seq1,m);
      n =nodemerge(seq2,n);
     
     //test
     print(seq1,m);
     print(seq2,n);
     multi(seq1,m,seq2,n);
     add(seq1,m,seq2,n);
     
     //delete
     delete_node(seq1);
     delete_node(seq2);
    return 0;
   }

样例测试输出

input m value:3
1 2
1 3
2 4
input n value:4
3 5
3 76
3 4
2 5
*********output*********
2x^4 + 1x^3 + 1x^2

*********output*********
3x^76 + 5x^5 + 3x^4

多项式乘法
*********output*********
6x^80 + 3x^79 + 3x^78 + 10x^9 + 11x^8 + 8x^7 + 3x^6

多项式加法
*********output*********
3x^76 + 5x^5 + 5x^4 + 1x^3 + 1x^2

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(C++实现多项式相乘)