PAT 1002

来源:互联网 发布:楼梯踏步高度算法 编辑:程序博客网 时间:2024/06/05 00:35
15分版本(没有考虑系数相同时如果抵消怎么办):
#include
#include
#include
int main() 
{
int a1[10] ;
float a2[10] ;
int b1[10] ;
float b2[10];
int c[20] ;
float d[20];
int m=0,n=0,i=0;
scanf("%d", &m);
for (i = 0; i < m; i++)
{
scanf("%d", &a1[i]);
scanf("%f", &a2[i]);
}
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &b1[i]);
scanf("%f", &b2[i]);
}
int j = 0,x=0;
i = 0;
while (i < m && j < n)
{
if (a1[i] > b1[j])
{
c[x] = a1[i];
d[x] = a2[i];
x++;
i++;
}
if (a1[i] < b1[j])
{
c[x] = b1[j];
d[x] =b2[j];
x++;
j++;
}
else
{
c[x]= a1[i];
d[x] = a2[i]+b2[j];
x++;
i++;
j++;
}
}
if (i < m)
{
while (i < m)
{
c[x] = a1[i];
d[x] = a2[i];
i++;
x++;
}
}
if (j < n)
{
while (j < n)
{
c[x] = b1[j];
d[x] = b2[j];
j++;
x++;
}
}

printf("%d ", x);
for (int i = 0; i < x - 1; i++)
{
printf("%d ", c[i]);
printf("%.1f ", d[i]);
}
printf("%d ", c[x - 1]);
printf("%.1f", d[x - 1]);
}


version2:考虑了当系数为0时的情况
#include
#include
#include
int main() 
{
int a1[10] ;
float a2[10] ;
int b1[10] ;
float b2[10];
int c[20] ;
float d[20];
int m=0,n=0,i=0;
scanf_s("%d", &m);
for (i = 0; i < m; i++)
{
scanf_s("%d", &a1[i]);
scanf_s("%f", &a2[i]);
}
scanf_s("%d", &n);
for (i = 0; i < n; i++)
{
scanf_s("%d", &b1[i]);
scanf_s("%f", &b2[i]);
}
int j = 0,x=0;
i = 0;
while (i < m && j < n)
{
if (a1[i] > b1[j])
{
c[x] = a1[i];
d[x] = a2[i];
x++;
i++;
}
if (a1[i] < b1[j])
{
c[x] = b1[j];
d[x] =b2[j];
x++;
j++;
}
else
{
if ((d[x] = a2[i] + b2[j]) == 0)
{
i++;
j++;
}
else
{
c[x]= a1[i];
d[x] = a2[i]+b2[j];
x++;
i++;
j++;
}
}
}
if (i < m)
{
while (i < m)
{
c[x] = a1[i];
d[x] = a2[i];
i++;
x++;
}
}
if (j < n)
{
while (j < n)
{
c[x] = b1[j];
d[x] = b2[j];
j++;
x++;
}
}

printf("%d ", x);
for (int i = 0; i < x - 1; i++)
{
printf("%d ", c[i]);
printf("%.1f ", d[i]);
}
printf("%d ", c[x - 1]);
printf("%.1f", d[x - 1]);
}


第三版:前两个都太复杂 应该对数组内容和数组下标之间的关系有更好的认识
原创粉丝点击