PAT甲级——1009 Product of Polynomials (25分)(最后一个测试点段错误)

思路:我记得乙级有一道题是多项式相加,这里是相乘,差不多的

借鉴木桶排序的思想,定义一个木桶数组,木桶的下标代表指数,元素值代表系数

数组开小了后面三个测试点都会段错误

我还有一个段错误想不明白,如果有路过的dalao麻烦指点一下

#include <iostream>
#include <algorithm>
using namespace std;
static const int MAX=2010;
struct P{
    int exp;//指数
    float coef;//系数
};
float bucket[MAX];

int main(){
    int a1,a2,num=0;
    P p1[10],p2[10];
    cin>>a1;
    for(int i=0;i<a1;i++)
        cin>>p1[i].exp>>p1[i].coef;
    cin>>a2;
    for(int i=0;i<a1;i++)
        cin>>p2[i].exp>>p2[i].coef;
    for(int i=0;i<a1;i++)
        for(int j=0;j<a2;j++)
            bucket[p1[i].exp+p2[j].exp] += (p1[i].coef*p2[j].coef);
    for(int i=MAX;i>=0;i--)
        if(bucket[i]!=0)
            num++;
    cout<<num<<" ";
    for(int i=MAX;i>=0;i--)
        if(bucket[i]!=0){
            num--;
            if(num)
                printf("%d %.1f ",i,bucket[i]); 
            else
                printf("%d %.1f",i,bucket[i]);   
        }
    cout<<endl;
    return 0;
} 
发布了298 篇原创文章 · 获赞 301 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_41895747/article/details/104361861