思路一:用数组来对应指数和系数
#include<iostream>
using namespace std;
int main()
{
int a=0, b=0; //a,b分别为多项式1,2的项数
int x = 0; //x为指数
float con = 0; //c为系数
float c[1001] = { 0 }; //数组c用来对应指数和系数
int sum = 0; //sum为求和后多项式的项数
cin >> a;
for (int i = 0; i < a; i++)
{
cin >> x >> con;
c[x] += con;
}
cin >> b;
for (int i = 0; i < b; i++)
{
cin >> x >> con;
c[x] += con;
}
for (int i = 0; i < 1001; i++)
{
if (c[i]!=0)
{
sum++;
}
}
cout << sum;
for (int i = 1000; i >=0 ; i--) //输出的时候需要按照次数的从高到底进行输出
{
if (c[i]!=0.0)
{
printf(" %d %.1f", i, c[i]);
}
}
return 0;
}
思路二:用STL-map来对应指数和系数
#include<iostream>
#include<map>
using namespace std;
int main()
{
int a, b=0; //a.b分别为两个多项式的项数
int e = 0; //指数
float c = 0; //系数
map<int, float> mp; //用map类型来实现指数与系数的对应
cin >> a;
for (int i = 0; i < a; i++) {
cin >> e >> c;
mp[e] = c;
}
cin >> b;
for (int i = 0; i < b; i++) {
cin >> e >> c;
mp[e] += c;
if (mp[e] == 0)//如果系数相加后为0 ,则剔除这一项
{
mp.erase(e);
}
}
cout << mp.size();
for (auto it = mp.rbegin(); it != mp.rend(); it++)
{
printf(" %d %.1f", it->first, it->second);
}
return 0;
}