zoukankan      html  css  js  c++  java
  • 1002. A+B for Polynomials (25)

    (1)思路

    用vector保存两个多项式结构

    将其中一个的所有元素压入一个结果vecotor,然后另一个vector对每个元素进行迭代

    一旦找到指数相同相的就改变结果vector中项的系数

    注意题目中要求 where K is the number of nonzero terms in the polynomial

    所以要舍弃所有系数为零的项

    #include <cstdio>
    #include <vector>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    int n;
    struct re{
      int exp;
      double coe;
    };
    const double EPS=1e-8;
    vector<re> add_v(vector<re> v1,vector<re> v2) {
      vector<re> temp;
      for(int i=0;i<v2.size();i++) temp.push_back(v2[i]);
      for(int i=0;i<v1.size();i++) {
        int flag=0;
        for(int j=0;j<v2.size();j++) {
          if(v1[i].exp == v2[j].exp) {
        temp[j].coe+=v1[i].coe;
        flag=1;
          }
        }
        if(flag == 0) {
          temp.push_back(v1[i]);
        }
      }
      return temp;
    }
    bool cmp(re r1,re r2) {
      return r1.exp > r2.exp;
    }
    int main() {
      vector<re> v1;
      vector<re> v2;
      scanf("%d",&n);
      for(int i=0;i<n;i++) {
        re temp;
        scanf("%d %lf",&temp.exp,&temp.coe);
        v1.push_back(temp);
      }
      scanf("%d",&n);
      for(int i=0;i<n;i++) {
        re temp;
        scanf("%d %lf",&temp.exp,&temp.coe);
        v2.push_back(temp);
      }
      vector<re> result=add_v(v1,v2);
      sort(result.begin(),result.end(),cmp);
      int size=0;
      for(int i=0;i<result.size();i++){
        if(fabs(result[i].coe) < EPS) continue;
        else size++;
      }
      printf("%d",size);
      for(int i=0;i<result.size();i++) {
        if(fabs(result[i].coe) < EPS) continue;
        printf(" %d %.1lf",result[i].exp,result[i].coe);
      }
      return 0;
    }

    (2)

    考虑到这里指数最多只有1000项所以可以用数组保存系数值,下标为指数值

    然后读入数据时修改对应指数的系数,然后记录非零项,按指数递减输出系数

    #include <cstdio>
    #include <cmath>
    using namespace std;
    const double EPS=1e-8;
    int main() {
      double result[1001]={0};
      int n;
      scanf("%d",&n);
      for(int i=0;i<n;i++) {
        double coe;
        int exp;
        scanf("%d %lf",&exp,&coe);
        result[exp]+=coe;
      }
      scanf("%d",&n);
      for(int i=0;i<n;i++) {
        double coe;
        int exp;
        scanf("%d %lf",&exp,&coe);
        result[exp]+=coe;
      }
      int size=0;
      for(int i=0;i<1001;i++) {
        if(fabs(result[i]) > EPS) size++;
      }
      printf("%d",size);
      for(int i=1000;i>=0;i--) {
        if(fabs(result[i]) > EPS) {
          printf(" %d %.1lf",i,result[i]);
        }
      }
      return 0;
    }

  • 相关阅读:
    查询避免Unknown column ‘xxx’ in ‘where clause
    Spring依赖循环:The dependencies of some of the beans in the application context form a cycle
    POJ(北京大学)刷题导航
    ACM使用Java提交总是超时的解决方法
    申请了服务器,建立了新博客。 不在用这个了。
    jeecg数据库添加字段后表单的修改
    jeecg普通表和数据字典的关联
    jeecg添加滚动图
    jeecg定时任务的bug记录
    classpath究竟是指哪里?
  • 原文地址:https://www.cnblogs.com/tclan126/p/8621479.html
Copyright © 2011-2022 走看看