算法笔记上能踩的坑都踩了。
#include<iostream> using namespace std; float a[1001];//至少1000个位置 int main(){ int n,cnt=0,aa; float bb; cin>>n; for(int i=0;i<n;i++){ cin>>aa>>bb; if(a[aa]==0)cnt++; a[aa]+=bb; } cin>>n; for(int i=0;i<n;i++){ cin>>aa>>bb; if(a[aa]==0)cnt++; a[aa]+=bb; if(a[aa]==0)cnt--;//考虑会不会被抵消 } cout<<cnt;//这里少输出一个“ ” for(int i=1000;i>=0;i--){ if(a[i]!=0){ printf(" %d %.1f",i,a[i]);//这里都是 “ ”+i+a[i]不就没有格式错误了嘛,太死脑筋了 } } }