#include <stdio.h>
#include <stdlib.h>
typedef struct Exp
{
int xishu;
int cishu;
}Exp;
int main()
{
int m,n,i,j,k;
Exp *a,*b,*c;
while(scanf("%d",&m)!=EOF)
{
a=(Exp *)malloc(m*sizeof(Exp));
for(i=0;i<m;i++)
scanf("%d%d",&a[i].xishu,&a[i].cishu);
scanf("%d",&n);
b=(Exp *)malloc(n*sizeof(Exp));
for(i=0;i<n;i++)
scanf("%d%d",&b[i].xishu,&b[i].cishu);
c=(Exp *)malloc((m+n)*sizeof(Exp));
for(i=0,j=0,k=0;i<m&&j<n;)
{
if(a[i].cishu>b[j].cishu)
c[k++]=a[i++];
else if(a[i].cishu<b[j].cishu)
c[k++]=b[j++];
else
{
if((a[i].xishu+b[j].xishu)!=0)
{
c[k].cishu=a[i].cishu;
c[k++].xishu=a[i++].xishu+b[j++].xishu;
}
else
{
i++;
j++;
}
}
}
if(i==m&&j!=n)
while(j!=n) c[k++]=b[j++];
else if(i!=m&&j==n)
while(i!=m) c[k++]=a[i++];
if(k!=0)
{
for(i=0;i<k-1;i++)
printf("%d %d ",c[i].xishu,c[i].cishu);
printf("%d %d",c[i].xishu,c[i].cishu);
}
printf("\n");
free(a);
free(b);
free(c);
}
return 0;
}此代码有什么问题?测试N遍都没有问题!为什么就是不能AC!!!
online_judge_1472
最新推荐文章于 2024-05-19 23:56:55 发布
本文分享了一段用于实现两个多项式相加的C语言程序代码。该程序通过定义结构体来表示多项式的系数和指数,并实现了输入两个多项式、进行加法运算并输出结果的功能。但作者反馈尽管进行了多次测试,程序仍无法通过评测。
1392

被折叠的 条评论
为什么被折叠?



