PAT A1002 A+B for Polynomials

//相对于书本的改进是设置了maxe,这样下一次不需要全部遍历
#include<stdio.h>
float A[1010];
int main(){
    //一开始我的想法是开两个数组,分别存放输入,然后再比较,这种想法一点也不巧妙,太蠢了
    //开1000的数组,输入的时候直接对应指数做下标输入对应的系数值
     int m,n,e;//输入次数
     float s=0.0;
     A[1010]={0.0};
     scanf("%d",&m);
     while(m--){
         scanf("%d%f",&e,&s);
         A[e]+=s;
    }
    scanf("%d",&n);//b
    while(n--){
        scanf("%d%f",&e,&s);
        A[e]+=s;
    }
    int maxe=0;
    int count=0;
    for(int i=0;i<=1000;i++){
        if(A[i]!=0.0){
            count++;
            maxe=i;//这样可以减少一些遍历    
        }
    }
    printf("%d",count);
    for(int i=maxe;i>=0;i--){
        if(A[i]!=0.0){
            printf(" %d %.1f",i,A[i]);
        }
    }
    return 0;
}

你可能感兴趣的:(C++,算法,pat)