解题思路:
根据题目的要求,输入数据是两组,并且采用指数下降的方式,并且输出的结果是,两项的指数相同的项的合并,这样的话第一时间会想到map的应用特性,并且指定key的排序规则为递减,即设置greater<int>即可。直接在输入时,就进行数据处理,对指数相同的项合并。
参考代码如下:(一直提交是部分正确,17分,所谓当局迷,还请哪位做过或有发现哪里我没有考虑到的大佬,指正一下,非常感谢!)
// polynomials 多项式 ;exponents 指数 ;coefficients系数
#include<iostream>
#include<iterator>
#include<map>
using namespace std;
typedef map<int, float,greater<int> > map_;
int main() {
map_ res;
int k;//exp为指数,coef为系数,k为非零项的个数
int exp1;
float coef1;
for (int j = 0; j < 2; ++j) {
cin >> k;
for (int i = 0; i < k; ++i) {
cin >> exp1 >> coef1;
res[exp1] += coef1;
}
}
cout << res.size();
for (map_::iterator it = res.begin(); it != res.end(); ++it) {
printf(" %d %.1f", it->first, it->second);
}
return 0;
}