有时不能用set计个数
以及scanf 输入类型错误
#include<iostream>
#include<set>
using namespace std;
float book[1001]={0};
//set<int> num; 有正有负有相互抵消的情况,所以不能用set计数
int main(){
int _1,_21;
float _22;//输入出问题是因为都用的int型但其中有float其他形式类型对不对
for(int i=0;i<2;i++){
scanf("%d",&_1);
for(int j=0;j<_1;j++){
scanf("%d %f",&_21,&_22);//scanf对于flaot型必须用"%f" double型必须用“%lf”
book[_21]+=_22;
//num.insert(_21);
}
}
int cnt=0;
for(int i=0;i<=1000;i++){
if(book[i]!=0.0){
cnt++;
}
}
printf("%d",cnt);
for(int i=1000;i>=0;i--){
if(book[i]!=0.0){
printf(" %d %.1f",i,book[i]);
}
}
printf("\n");
return 0;
}
总结1,一开始只过了前三个测试点,是因为在运算过程中有可能相互抵消为0此时该term就不能再出现,而用set实现不了只一点,会出现问题,所以只能最后都收集完了再去计算符合条件的个数
2.scanf主义类型,别光想着int int int 。。。。。。。还有float 是f 不是lf
3.还有字典序里面未必是int 可以是 char book[256] 针对char型字符 float book[ ] 里面存放的是float型多少个酱紫
英语
问题
无