思路一:用數組來對應指數和係數
#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;
}