代码并没有在编译器中实现,新手渣渣还在学习中,欢迎指正…
在网上看到的正确答案:
#include <iostream> #include <algorithm> #include <vector> using namespace std; typedef struct Term{ int coe;//系数 int exp;//指数 }Term; bool compare(Term a,Term b) { return a.exp>b.exp; } /* Term Mul(Term a,Term b) { a.coe = a.coe*b.coe; a.exp = a.exp+b.exp; return a; } */ /* Term Add(Term a,Term b) { a.coe +=b.coe; return a; }*/ void print(Term a) { cout<<a.coe<<" "<<a.exp<<" "; } int main() { vector<Term> vec1; vector<Term> vec2; vector<Term> vec; vector<Term>::iterator it1,it2; int N1,N2; int coe,exp; bool flag = false; Term t; cin>>N1; while(N1--) { cin>>coe>>exp; t.coe = coe; t.exp = exp; vec1.push_back(t); } //for_each(vec1.begin(),vec1.end(),print); //system("pause"); cin>>N2; while(N2--) { cin>>coe>>exp; t.coe = coe; t.exp = exp; vec2.push_back(t); } //for_each(vec2.begin(),vec2.end(),print); //system("pause"); for (it1=vec1.begin();it1!=vec1.end();it1++) for (it2=vec2.begin();it2!=vec2.end();it2++) { t.coe = it1->coe * it2->coe; t.exp = it1->exp + it2->exp; if (t.coe!=0) vec.push_back(t); } sort(vec.begin(),vec.end(),compare); for (it1 = vec.begin();it1!=vec.end();it1=it2) { for (it2 = it1+1;it2!=vec.end() &&it1->exp==it2->exp;it2++) it1->coe += it2->coe; if (it1->coe!=0) { if (flag) cout<<" "; else flag = true; cout<<it1->coe<<" "<<it1->exp; } } if (vec1.size()==0) { cout<<"0 0"; } cout<<endl; flag = false; for (it1=vec1.begin(),it2=vec2.begin();it1!=vec1.end()&&it2!=vec2.end();) { if (it1->exp >it2->exp) { if (flag) cout<<" "; else flag = true; cout<<it1->coe<<" "<<it1->exp; it1++; } else if (it1->exp < it2->exp) { if (flag) cout<<" "; else flag = true; cout<<it2->coe<<" "<<it2->exp; it2++; } else { if ((it1->coe+it2->coe)) { if (flag) cout<<" "; else flag = true; cout<<it1->coe+it2->coe<<" "<<it1->exp; } it1++; it2++; } } if (it1==vec1.end()) { while(it2!=vec2.end()) { if (flag) cout<<" "; else flag = true; cout<<it2->coe<<" "<<it2->exp; it2++; } } if (it2==vec2.end()) { while(it1!=vec1.end()) { if (flag) cout<<" "; else flag = true; cout<<it1->coe<<" "<<it1->exp; it1++; } } if (flag==false) cout<<"0 0"; cout<<endl; //for_each(vec.begin(),vec.end(),print); //system("pause"); return 0; }