题目:https://www.patest.cn/contests/pat-a-practise/1002
易错点:
1. 保留小数
2. 系数相加为零的项就没了
#include<iostream>
using namespace std;
int main() {
int K1, K2;
int E1[10], E2[10];
float C1[10], C2[10];
int E3[20];
float C3[20];
for (int i = 0;i < 10;i++) {
C1[i] = 0;
C2[i] = 0;
}
cin >> K1;
for (int i = 0;i < K1;i++) {
cin >> E1[i] >> C1[i];
}
cin >> K2;
for (int i = 0;i < K2;i++) {
cin >> E2[i] >> C2[i];
}
int count = 0;
int temp1, temp2, temp3;
temp1 = temp2 = temp3 = 0;
for (;temp1 < K1 && temp2 < K2;) {
if (E1[temp1] > E2[temp2]) {
E3[temp3] = E1[temp1];
C3[temp3] = C1[temp1];
temp1++;
temp3++;
}
else if (E2[temp2] > E1[temp1]) {
E3[temp3] = E2[temp2];
C3[temp3] = C2[temp2];
temp3++;
temp2++;
}
else if (E1[temp1] == E2[temp2]) {
//一开始忘了考虑这个
if (C1[temp1] + C2[temp2] != 0) {
E3[temp3] = E1[temp1];
C3[temp3] = C1[temp1] + C2[temp2];
temp1++;
temp2++;
temp3++;
}
else {
temp1++;
temp2++;
}
}
}
while (temp1 < K1) {
E3[temp3] = E1[temp1];
C3[temp3] = C1[temp1];
temp1++;
temp3++;
}
while (temp2 < K2) {
E3[temp3] = E2[temp2];
C3[temp3] = C2[temp2];
temp2++;
temp3++;
}
count = temp3;
cout << count;
for (int i = 0;i < count;i++) {
cout << " " << E3[i] << " ";
//突然忘了C++里面怎么保留小数,凑活用下(
printf("%.1f", C3[i]);
}
return 0;
}