数据结构.多项式加法

#include<iostream>
using namespace std;
int a[100][2], b[100][2], sum[100][2];
int n, m;
int main()
{cin >> n;//输入第一个多项式的项数for (int i = 0; i < n; i++){cin >> a[i][0] >> a[i][1];//分别输入系数和指数}cin >> m;//输入第二个多项式的项数for (int i = 0; i < m; i++){cin >> b[i][0] >> b[i][1];//分别输入系数和指数}int x = 0, y = 0, s = 0;//定位a,b,sum数组的下标指向while (x < n && y < m)//当x,y在项数数量范围内,则比较两个多项式的大小{if (a[x][1] == b[y][1])//如果二者的指数相同{sum[s][0] = a[x][0] + b[y][0];//则系数相加if (sum[s][0] != 0)//如果系数不等于0{sum[s][1] = a[x][1];//则指数落系下来s++;//指针往后移动}x++, y++;//指针往后移动}else if (a[x][1] > b[y][1])//如果a多项式的指数比b的多项式的指数大{sum[s][0] = a[x][0];//则将a的系数和指数都落到sum中sum[s][1] = a[x][1];s++, x++;//a和sum的指针往后移动}else//如果b的多项式的指数比a的多项式的指数大{sum[s][0] = b[y][0];//则将b的系数和指数都落到sum中sum[s][1] = b[y][1];s++, y++;//b和sum的指针往后移动}}if (x == n && y < m)//如果a没有项数可以比较{for (int i = y; i < m; i++)//则将b剩余的项的系数和指数都落下来{sum[s][0] = b[i][0];sum[s][1] = b[i][1];s++;}}if (y == m && x < n)//如果b没有项数可以比较{for (int i = x; i < n; i++)//则将a剩余的项的系数和指数都落下来{sum[s][0] = a[i][0];sum[s][1] = a[i][1];s++;}}for (int i = 0; i < s; i++){if (i == 0){cout << sum[i][0] << " " << sum[i][1];}else{cout << " " << sum[i][0] << " " << sum[i][1];}}if (s == 0){cout << 0 << " " << 0;}return 0;
}
#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct node {int coef;//系数int exp;//指数node* next;//在c++中支持node*这种写法
}list;
node* newNode(int c, int e)//创建一个新结点
{node* temp = (node*)malloc(sizeof(node));temp->coef = c;//系数temp->exp = e;//指数temp->next = NULL;return temp;
}
list* createPoly(int n)//创建长度为n的链表
{list* L = NULL;//创建一个指针表示链表if (n == 0)//如果链表的长度为0,则直接返回{return L;}else{L = (list*)malloc(sizeof(node));//如果链表的长度不是0,则分配空间}int ac = 0;//初始化系数int ae = 0;//初始化指数node* lastp = L;//创建尾指针node* temp = NULL;//创建一个指针用来接收新插入的结点for (int i = 0; i < n; i++){cin >> ac >> ae;//输入系数,指数temp = newNode(ac,ae);//接收这个新的结点lastp->next = temp;//尾插入新的结点lastp = temp;//更新尾结点}return L;//返回这条链表
}
list* addPoly(list* A, list* B)//将两个多项式相加
{if (!A->next)return B;if (!B->next)return A;node* pa = A->next;//pa指向A的第一项node* pb = B->next;//pb指向B的第一项list* sum = (list*)malloc(sizeof(node));//创建一个计算总和的链表sum->next = NULL;//初始化node* lastp = sum;//尾结点node* temp = NULL;//创建一个临时结点while (pa && pb)//如果满足二者的长度在多项式内 {if (pa->exp == pb->exp)//并且这一项的指数相同{if (pa->coef + pb->coef != 0)//并且相加还不等于0{temp = newNode(pa->coef + pb->coef, pa->exp);//那么就得到这个系数相加后的结点lastp->next = temp;//尾插入总和链表lastp = temp;}pa = pa->next;//指针向后移动pb = pb->next;}else if (pa->exp > pb->exp)//如果pa的指数比pb的指数大{temp = newNode(pa->coef, pa->exp);//将pa落下来lastp->next = temp;//尾插lastp = temp;pa = pa->next;//移动}else//如果pa的指数比pb小,同理{temp = newNode(pb->coef, pb->exp);lastp->next = temp;lastp = temp;pb = pb->next;}}if (pa == NULL && pb != NULL)//如果pa指向空,将pb后面的全部落下来{lastp->next = pb;}if (pb == NULL && pa != NULL)//同理{lastp->next = pa;}return sum;
}
void printPoly(list*L)//打印链表
{if (!L->next)//如果链表为空,则直接打印0 0{cout << "0 0";}else//如果链表不为空{node* p = L->next;//p指向第一个结点int i = 0;while (p){if (i == 0){cout << p->coef << " " << p->exp;i++;}else{cout << " " << p->coef << " " << p->exp;}p = p->next;}}
}
int main()
{int n, m;cin >> n;list* La = createPoly(n);//创建A链表cin >> m;list* Lb = createPoly(m);//创建B链表list* result = addPoly(La, Lb);//计算printPoly(result);//打印return 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

递归学习资料

思路 例题 package 递归;public class 反向打印字符串 {public static void main(String[] args) {f("ABC",0);}static void f(String str,int n){if (nstr.length()){return;}f(str,n1);System.out.println(str.charAt(n)"");} }多路递归 递归优化 -剪枝…

建立网络防御时需要重点考虑的10个因素

互联网安全中心&#xff08;CIS&#xff09;建议企业可以从以下10个因素入手&#xff1a;资产管理、数据管理、安全配置、账户和访问控制管理、漏洞管理、日志管理、恶意软件防御、数据恢复、安全培训和事件响应。 1、资产管理 建立网络防御的第一步是制定企业资产和软件资产的…

【场景题】如何设计一个购物车功能?

本文参考文章&#xff1a;https://www.hollischuang.com/archives/6998 https://www.woshipm.com/pd/4115447.html https://zq99299.github.io/note-book/back-end-storage/01/03.html 首先我们要明白&#xff1a;购物车系统在电商系统中的角色是作为用户选购商品和最终下单的桥…

AI Icon Generator:免费的AI图标生成器,一键生成你想要的图标(附试用链接)

给大家推荐一个免费的AI图标生成器&#xff0c;只需要输入你想要生成的图标内容就可以一键生成图标&#xff0c;可以选择不同风格&#xff0c;完全免费&#xff0c;比如输入“一只在宇宙飞船上的猪&#xff01;”看看他能生成什么样的效果。 感兴趣的小伙伴快去试试吧&#xff…

C语言-两数组元素互换

#include <stdio.h> #include <string.h>//两数组元素互换 void swap(int ch1[],int ch2[],int sz) {int i 0;char ch 0;for(i 0;i < sz;i){ch ch1[i];ch1[i] ch2[i];ch2[i] ch;} } //打印数组元素 void print(int ch[],int sz) {int i 0;for(i 0;i <…

uniapp iOS 真机调试

一、下载爱思助手 二、打开爱思助手&#xff0c;把你的 苹果手机 用原装数据线连接至电脑&#xff1a; 找到 工具箱 > 搜索IPA > 打开IAP签名 三、添加 IPA 文件 mac&#xff1a;finder 》应用程序 》右键 HbuilderX 》显示包内容 》HbuilderX / plugins/ lau…

矩阵爆破逆向-条件断点的妙用

不知道你是否使用过IDA的条件断点呢&#xff1f;在IDA进阶使用中&#xff0c;它的很多功能都有大作用&#xff0c;比如&#xff1a;ida-trace来跟踪调用流程。同时IDA的断点功能也十分强大&#xff0c;配合IDA-python的输出语句能够大杀特杀&#xff01; 那么本文就介绍一下这…

Premiere Pro 2024:革新视频编辑,打造专业影视新纪元

在数字化时代&#xff0c;视频已经成为人们获取信息、娱乐消遣的重要媒介。对于视频制作者而言&#xff0c;拥有一款功能强大、易于操作的视频编辑软件至关重要。Premiere Pro 2024&#xff0c;作为Adobe旗下的旗舰视频编辑软件&#xff0c;凭借其卓越的性能和创新的特性&#…

Java 解决异步 @Async 失效问题

1.问题描述 使用Async进行异步处理时&#xff0c;异步没有生效 2.原因分析 经过排查后发现是因为使用Async的方法没有跨2个Service导致的 错误示例 控制器接口 > 直接调用 custAdminService.importCBuy() 3.解决方案 Controller接口不变&#xff0c;多添加一层Service&a…

基于机器学习的曲面拟合方法

随着科技的不断发展&#xff0c;机器学习成为了最近最热门的技术之一&#xff0c;也被广泛应用于各个领域。其中&#xff0c;基于机器学习的曲面拟合方法也备受研究者们的关注。曲面拟合是三维模型处理中的重要技术&#xff0c;其目的是用一组数据点拟合出平滑的曲面&#xff0…

Spring框架学习

Spring&#xff1a; &#xff08;1&#xff09;Bean线程安全问题 &#xff08;2&#xff09;AOP&#xff0c;事务原理&#xff0c;事务失败 &#xff08;3&#xff09;Bean的生命周期 &#xff08;4&#xff09;循环依赖 SpringMVC&#xff1a; &#xff08;1&#xff09…

5201B数据网络测试仪

|5201B数据网络测试仪| | 产品综述 | 电科思仪5201B便携式数据网络测试仪&#xff0c;集成高性能IP基础测试硬件平台&#xff0c;提供L2-L3流量测试及协议仿真解决方案&#xff0c;支持以太网报文线速生成与分析、统计、报文捕获&#xff0c;以及路由、接入、组播、数据中心等协…

基于深度学习的烟雾检测系统(含UI界面、yolov8、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8 yolov8主要包含以下几种创新&#xff1a;         1. 添加注意力机制&#xff08;SE、CBAM等&#xff09;         2. 修改可变形卷积&#xff08;DySnake-主干c…

(学习日记)2024.03.04:UCOSIII第六节:main函数+前六节总结

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

符号函数Sign(博途PLC SCL代码)

符号函数在ADRC自抗扰算法里会有涉及,同时在滑膜控制里也会用到,这篇博客我们介绍符号函数在博途PLC里的实现。 1、ADRC自抗扰算法: https://rxxw-control.blog.csdn.net/article/details/126547180https://rxxw-control.blog.csdn.net/article/details/1265471802、模拟量…

视频生成模型Sora的全面解析:从AI绘画、ViT到ViViT、DiT、VDT、NaViT、VideoPoet

视频生成模型Sora的全面解析&#xff1a;从AI绘画、ViT到ViViT、DiT、VDT、NaViT、VideoPoet 真没想到&#xff0c;举例视频生成上一轮的集中爆发才过去三个月&#xff0c;没想OpenAI一出手&#xff0c;该领域又直接变天了自打2.16日OpenAI发布sora以来&#xff0c;不但把同时…

软考58-上午题-【数据库】-分布式数据库

一、四个透明 二、四种性质 三、真题 真题1&#xff1a; 真题2&#xff1a; 真题3&#xff1a; 真题4&#xff1a; 真题5&#xff1a;

5G智能制造纺织工厂数字孪生可视化平台,推进纺织行业数字化转型

5G智能制造纺织工厂数字孪生可视化平台&#xff0c;推进纺织行业数字化转型。纺织工业作为传统制造业的重要组成部分&#xff0c;面临着转型升级的紧迫需求。随着5G技术的快速发展&#xff0c;智能制造成为纺织工业转型升级的重要方向。数字孪生可视化平台作为智能制造的核心技…

力扣76. 最小覆盖子串(滑动窗口)

Problem: 76. 最小覆盖子串 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义两个map集合need和window&#xff08;以字符作为键&#xff0c;对应字符出现的个数作为值&#xff09;&#xff0c;将子串t存入need中&#xff1b; 2.定义左右指针left、right均指向0&#xff…

【AI视野·今日Sound 声学论文速览 第五十期】Fri, 1 Mar 2024

AI视野今日CS.Sound 声学论文速览 Fri, 1 Mar 2024 Totally 9 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Probing the Information Encoded in Neural-based Acoustic Models of Automatic Speech Recognition Systems Authors Quentin Raymondau…