02-线性结构2 一元多项式的乘法与加法运算(20 分)

02-线性结构1 一元多项式的乘法与加法运算 (20分) 02-线性结构1 一元多项式的乘法与加法运算   (20分) 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空 阅读详情

**题目来源:中国大学MOOC-陈越、何钦铭-数据结构-2018春
作者: DS课程组
单位: 浙江大学**

问题描述:
设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
输入样例:
4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1
输出样例:
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0

解答:这道题我写的时候思路很奇怪==,请勿模仿,用两个map分别存两个多项式{指数:系数}的对应信息,又用3个set,其中两个set分别存两个多项式的指数信息,用于之后从map中取系数进行运算,另一个set用于结果生成(因为set自动排好序了)。还是推荐采用开大小为1001数组进行实现,更为直接,我会把数组实现的代码再贴上来。

#include <iostream>
#include <map>
#include <set>
using namespace std;
map<int,int> ExpAndNumA,ExpAndNumB,result;
set<int> ExpA,ExpB,resultSet;
void input(map<int,int> &SomeoneMap,set<int> &SomeoneSet,int N)
{
    for(int i=0; i<N; i++)
    {
        int num,exp;
        cin>>num>>exp;
        SomeoneMap[exp]=num;
        SomeoneSet.insert(exp);
    }
}
void add()
{
    for(auto it=ExpA.begin(); it!=ExpA.end(); it++)
    {
        resultSet.insert(*it);
        result[*it]=ExpAndNumA[*it];
    }
    for(auto it=ExpB.begin(); it!=ExpB.end(); it++)
    {
        if(result.count(*it)==0)
        {
            resultSet.insert(*it);
            result[*it]=ExpAndNumB[*it];
        }
        else
            result[*it]+=ExpAndNumB[*it];
    }
}
void multi()
{
    for(auto it=ExpA.begin(); it!=ExpA.end(); it++)
    {
        for(auto it2=ExpB.begin(); it2!=ExpB.end(); it2++)
        {
            int newExp=*it+*it2;
            int newNum=ExpAndNumA[*it]*ExpAndNumB[*it2];
            if(result.count(newExp)==0)
            {
                resultSet.insert(newExp);
                result[newExp]=newNum;
            }
            else
                result[newExp]+=newNum;
        }
    }
}
void output()
{
    bool flag=0;
    for(auto rit=resultSet.rbegin(); rit!=resultSet.rend(); rit++)
    {
        if(result[*rit]!=0)
        {
            flag=1;
            if(rit==resultSet.rbegin())
            {
                cout<<result[*rit]<<" "<<*rit;
            }
            else
            {
                cout<<" "<<result[*rit]<<" "<<*rit;
            }
        }
    }
    if(!flag)
        cout<<"0 0";
}
int main()
{
    int N1,N2;
    cin>>N1;
    input(ExpAndNumA,ExpA,N1);
    cin>>N2;
    input(ExpAndNumB,ExpB,N2);
    result.clear();
    resultSet.clear();
    multi();
    output();
    cout<<endl;
    result.clear();
    resultSet.clear();
    add();
    output();
    return 0;
}
02-线性结构2 一元多项式的乘法与加法运算 (20 分) #include <stdio.h> typedef struct PolyNode *Polynomial; struct PolyNode { int coef; int expon; Polynomial link; }; Polynomial ReadPoly(); void PrintPoly(Polynomial P); void Attach(int c, in... 阅读详情

相关推荐

C 链表 02-线性结构2 一元多项式的乘法与加法运算 (20分)

02-线性结构2 一元多项式的乘法与加法运算 (20分) 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输...

BLUEsang的博客 424

7-1 一元多项式的乘法与加法运算

7-1 一元多项式的乘法与加法运算分数 20全屏浏览题目切换布局作者 DS课程组单位 浙江大学设计函数分别求两个一元多项式的乘积与和。

shuonine2b的博客 1344

C语言 02-线性结构2 一元多项式的乘法与加法运算 (20 分)

02-线性结构2 一元多项式的乘法与加法运算 (20 分) 该题是在mooc学数据结构中的作业题,题目提交是pta平台。 题目分析:求两个多项式的乘法和加法。 用数组做的话可能要定义很长的一个数组(当指数非常大时),这样会浪费很多空间,因此选择了链表进行处理。 对于多项式的加法:比较两个链表结点的指数,相同就系数相加作为结果链表的结点,若指数不同,结果链表就直接链接到大的那个结点上(而不是重新...

weixin_43169298的博客 399

浙大数据结构02-线性结构2 一元多项式的乘法与加法运算 (20分)

设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。 输入样例: 4 3 4 -5 2 6 1 ...

leslie___的博客 832

Redis简介和项目应用

内存优先架构简介Redis的读写操作都是在内存中执行的,计算机内存的读写速度极快,比机械硬盘的读写快很多,因此也会比MySql采用机械读写的方式性能更高。但是这样会产生一个问题,当Redis重启之后,内存中的数据就会丢失,为了保证数据不会因为服务器重启而丢失,Redis实现了数据持久化的机制,这个机制会把数据存储到磁盘中,当服务器重启的时候,能够从磁盘中恢复原有的数据。

人工智能、机器学习 759

【Anaconda】conda国内镜像源快速配置指南(清华/阿里云)

本文详细介绍了如何为Anaconda配置国内镜像源(清华/阿里云),以显著提升conda包下载速度并减少安装失败率。通过分步指南和实用技巧,帮助开发者快速完成配置,优化Python开发环境。

weixin_33725722的博客 1488

02-线性结构2 一元多项式的乘法与加法运算 (20 分)

02-线性结构2 一元多项式的乘法与加法运算 (20 分) 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出样例: 1

weixin_45207880的博客 1245

立创·庐山派-K230-CanMV(嘉楠勘智)开发板通过ATK-ESP8266实现图像识别数据无线传输至原子云

本文详细介绍了如何使用立创·庐山派-K230-CanMV开发板,通过ATK-ESP8266 WIFI模块实现图像识别数据的无线传输至原子云平台。内容包括硬件连接、软件环境搭建、AT指令控制、原子云连接及数据上传的全过程,并提供了实用的调试技巧和常见问题解决方案,为物联网应用开发提供了完整实践指南。

potato的博客 743

PTA一元多项式的乘法与加法运算 分数 20 作者 DS课程组 单位 浙江大学

注:“出现未定义行为”(Undefined Behavior)是计算机科学和编程领域的一个重要概念,它指的是在程序中出现的一些操作或行为,其结果是未定义的。编程语言的标准通常规定了一些行为是未定义的,以便提高编译器的优化能力,并允许编译器在生成更高效的代码时有更大的自由度。输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。除以零:尝试将一个数除以零。

m0_73804746的博客 982

强化学习代码实现PPO

梯度更新:通过截断(clipping)限制策略更新幅度,避免策略变化过大影响稳定性。首先是数据预处理,将相关数据(状态、采取的动作、状态奖励、下一个状态)放到gpu上。根据当前状态 state,利用策略网络生成每个动作的概率分布 probs。2. 修改了策略模型的输出,从每个动作的概率分布变成了动作的均值和方差。1. 修改了动作空间,离散空间变成了连续空间,使用正太分布来采样。3. 修改了动作的ratio的计算,从离散分布变成了正太分布计算。Update函数:通过经验缓冲数据来优化策略模型和价值模型。

wlxsp的博客 635

Keysight ADS新手必看:3分钟搞定TDR模拟的保姆级教程(附差分信号设置技巧)

本文为Keysight ADS新手提供TDR模拟的保姆级教程,详细介绍了从基础环境准备到差分信号设置的全流程。通过内置模板调用、待测器件连接和仿真结果解读,帮助用户快速掌握TDR模拟技术,特别包含差分信号配置技巧,提升信号完整性分析效率。

weixin_30872157的博客 197

02-线性结构2 一元多项式的乘法与加法运算 (20分)

设计函数分别求两个一元多项式的乘积与和。 输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。 输入样例:4 3 4 -5 2 6 1 -

Ken 9685

Nacos漏洞利用工具V3.0.5实战:从认证绕开到内存马植入的全流程指南

本文详细解析了Nacos漏洞利用工具V3.0.5在实战中的应用,从认证绕开到内存马植入的全流程。文章深入探讨了如何利用Nacos的历史漏洞,如默认口令、认证逻辑绕过、Derby SQL注入及Jraft反序列化,实现权限提升与持久化控制,并提供了防御视角与加固建议,旨在帮助安全人员理解攻击链以加强防护。

h6j7k8l9p0的博客 483

【精简】02-线性结构2 一元多项式的乘法与加法运算 (20 分)

02-线性结构2一元多项式的乘法与加法运算(20分) 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格...

tqlwsl的博客 1034

STM32实战开发(150):基于STM32的智能电力负荷控制系统开发

本文介绍了基于STM32的智能电力负荷控制系统的设计与实现,涵盖了硬件设计、软件设计、负荷预测与控制等多个方面。该系统能够实时监控电力负荷,预测未来负荷变化,并根据预测结果自动调节电力负荷,防止电网过载或浪费。未来,我们可以进一步优化该系统,加入更多的传感器数据,提升预测算法的精度,并结合大数据与云计算技术实现更为强大的远程控制与数据分析功能。

2201_76125393的博客 715

C++设计模式之观察者模式

观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。这种模式通常用于实现分布式事件处理系统,当一个对象(称为“主题”或“发布者”)改变状态时,所有注册的观察者都会收到通知。

每天进步一点点。 600

02-线性结构2 一元多项式的乘法与加法运算 (20分)

一元多项式的乘法与加法运算题目代码总结与反思 题目 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式...

weixin_45967395的博客 840

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 01-复杂度2 Maximum Subsequence Sum
下一篇: 02-线性结构3 Reversing Linked List(25 分)
peterchen96
博客等级 码龄10年 6粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值