题目如下:
这道题目学习了网络上一种很精妙的方法,在这之前我的设计是老老实实的用一个超大数组,按照输出顺序依次存入这些数,这样做的弊端在于:这样的设计需要三个数组,分别用于存储输入的第一行、输入的第二行和输出的行,并且在向输出行复制数据时需要进行大量的判断,如果说,题目明确输入的数据按照指数大小从大到小排列,那么输出会容易一些,但是题目并未说明这一点(不过作为多项式输入,我觉得一般也是从大到小排列的)。既然题目没有说,我们也不好去擅自认为是这样,因此出现了第二种方法。
想法很简单,即把数组的下标作为指数,数组中存的数即为对应下标指数的系数,比如输入中的第一行:2 1 2.4 0 3.2就可以保存为:a[1] = 2.4,a[0] = 3.2,这样的话在输出阶段就能够少很多次判断,并且全程只需要一个数组。
下面先放正确通过的代码:
#include <stdio.h>
#define ARRAY_SIZE 1111
int main()
{
int n;
float a;
int count;
float res[ARRAY_SIZE] = {
0.0f};
int K = 0; //记录最终数组的个数
scanf("%d", &count);
for(int i=0;i<count;i++){
scanf