数组与链表算法-数组与多项式

news2024/9/21 0:53:19

目录

数组与链表算法-数组与多项式

多项式数组表达式

C++代码


数组与链表算法-数组与多项式

多项式是数学中相当重要的表达方式,如果使用计算机来处理多项式的各种相关运算,那么通常使用数组或链表来存储多项式。

多项式数组表达式

假如一个多项P(X) = a_{n}X^{n} + a_{n-1}X^{n-1} + ... + a_{1}X + a_{0},这个多项式P(X)就被称为n次多项式。一个多项式如果使用数组结构存储在计算机中的话,表示法有以下两种:

(1)使用一个n+2长度的一维数组来存放,数组的第一个位置存储多项式的最大指数n,数组之后的各个位置从指数n开始,依次递减按序存储对应项的系数:

        P = (n, a_{n}, a_{n-1}, ... , a_{1}, a_{0})

存储在A(1:n+2)中,例如P(X) = 2X^{5} + 3X^{4} + 5X^{2} + 4X + 1,可转换为A数组来表示,例如:

        A = [5, 2, 3, 0, 5, 4, 1]

使用这种表达法的优点是在计算机中运用时,对于多项式各种运算(如加法与乘法)的设计比较方便。不过,如果多项式的系数为多半为零,例如X^{100}+1,就太浪费内存空间了。

C++代码

#include<iostream>
using namespace std;

void PolySum(int* arrA, int* arrB, int* arrResoult) {
	arrResoult[0] = arrA[0];
	for (int i = 1; i < arrA[0] + 2; i++) {
		arrResoult[i] = arrA[i] + arrB[i];		
	}
}

void PrintPoly(int* arr) {
	int MaxExp = arr[0];
	for (int i = 1; i < arr[0] +2; i++) {
		if (arr[i] != 0) {
			if (MaxExp != 0)
				cout << arr[i] << "X^" << MaxExp << " ";
			else
				cout << arr[i];
			if (MaxExp - 1 >= 0)
				cout << " + ";
		}
		MaxExp--;
	}
	cout << endl;
}

int main() {
	int* PolyA = new int[]{ 4,3,7,0,6,2 };
	int* PolyB = new int[]{ 4,1,5,2,0,9 };
	int* PolyResoult = new int[PolyA[0]+2] {0};
	cout << "多项式A:";
	PrintPoly(PolyA);
	cout << "多项式B:";
	PrintPoly(PolyB);
	PolySum(PolyA, PolyB, PolyResoult);
	cout << "A + B =  ";
	PrintPoly(PolyResoult);
	return 0;
}

输出结果

(2)只存储多项式中的非零项。如果有m个非零项,就使用2m+1长的数组来存储每一个非零项的指数及系数,但数组的第一个元素存储的是这个多项式非零项的个数。

例如P(X) = 2X^{5} + 3X^{4} + 5X^{2} + 4X + 1,可表示成A(1:2m+1)数组,如下所示:

        A = \left \{ 5, 2, 5, 3, 4, 5, 2, 4, 1, 1, 0 \right \}

这种方法的优点是在多项式零项较多时可以减少对内存空间的浪费,但缺点是在为多项式设计各种运算时会复杂许多。

使用多项式的两种数组表示法来存储多项式P(X) = 8X^{5} + 7X^{4} + 5X^{2} + 12,结果如下:

  • P = (5, 8, 7, 0, 5, 0, 12) 
  • P = (5, 8, 5, 7, 4, 5, 2, 12, 0)

注意,在上面这个例子中,第二种数组表示法并没有体现出减少对内存空间的浪费的优点,这是因为多项式P(X)的零项并不多,只是缺了X^{3}X这两项。

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

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

相关文章

网络安全(黑客技术)—小白自学

目录 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&am…

PostgreSQL 基础知识

执行环境&#xff1a; psql 1. 创建一个表格 CREATE TABLE customers ( customer_id serial PRIMARY KEY,firstname VARCHAR(100) NOT NULL,lastname VARCHAR(100) NOT NULL,username VARCHAR(50) UNIQUE NOT NULL,password VARCHAR(50) NOT NULL,email VARCHAR(255) UNIQUE …

Go学习第十三章——Gin(请求与响应)

Go web框架——Gin&#xff08;请求与响应&#xff09; 1 响应1.1 String1.2 JSON&#xff08;*&#xff09;1.3 HTML&#xff08;*&#xff09;1.4 XML1.5 文件&#xff08;*&#xff09; 2 请求2.1 请求参数查询参数 (Query)动态参数 (Param)表单参数 (PostForm)原始参数 (Ge…

[导弹打飞机H5动画制作]飞机路线的随机起飞及自爆模拟

参考代码&#xff1a; this.btnOff.addEventListener("click", off.bind(this)); this.btnBomb.addEventListener("click", bomb.bind(this)); var _this this; var pb null; function off() {if (pb null) {pb new lib.sb1link();pb.x 600;pb.y 30…

Spring Cloud:三【详细】

目录 Http客户端Feign Feign的使用 Feign自定义配置 第一种方式 第二种方式 Feign的优化 Feign最佳实践方式 实现一 实现二 Http客户端Feign RestTemplate缺点是&#xff0c;url不统一&#xff0c;编写困难&#xff0c;可读性差&#xff0c;参数复杂难以维护。 这时…

【计算机网络笔记】DNS报文格式

DNS 提供域名到主机IP地址的映射  域名服务的三大要素&#xff1a;  域&#xff08;Domain&#xff09;和域名(Domain name)&#xff1a; 域指由地 理位置或业务类型而联系在一起的一组计算机构 成。  主机&#xff1a;由域名来标识。域名是由字符和&#xff08;或&a…

刚刚:腾讯云3年轻量2核2G4M服务器优惠价格366元三年

腾讯云3年轻量2核2G4M服务器&#xff0c;2023双十一优惠价格366元三年&#xff0c;自带4M公网带宽&#xff0c;下载速度可达512KB/秒&#xff0c;300GB月流量&#xff0c;50GB SSD盘系统盘&#xff0c;腾讯云百科txybk.com分享腾讯云轻量2核2G4M服务器性能、优惠活动、购买条件…

雷电_安卓模拟器安装burpsuit_CA证书

雷电_安卓模拟器安装burpsuit_CA证书 文章目录 雷电_安卓模拟器安装burpsuit_CA证书雷电模拟器官网&#xff1a;https://www.ldmnq.com 安装burpsuit证书1 打开雷电模拟器右上角的winfi图标 -->点击齿轮2 修改网络3 选择高级 —》手动4 查看真实机IP的地址&#xff0c;选择虚…

超分辨率重建——SESR网络训练并推理测试(详细图文教程)

最近学了一个超轻量化的超分辨率重建网络SESR&#xff0c;效果还不错。 目录 一、 源码包二、 数据集的准备2.1 官网下载2.2 网盘下载 三、 训练环境配置四、训练4.1 修改配置参数4.2 导入数据集4.3 2倍超分网络训练4.3.1 训练SESR-M5网络4.3.2 训练SESR-M5网络4.3.3 训练SESR…

Kitex踩坑 [Error] KITEX: processing request error,i/o timeout

报错问题 2023/010/28 17:20:10.250768 default_server_handler.go:234: [Error] KITEX: processing request error, remoteService, remoteAddr127.0.0.1:65425, errordefault codec read failed: read tcp 127.0.0.1:8888->127.0.0.1:65425: i/o timeout 分析原因 Hert…

【刷题笔记10.28】Leetcode:使括号有效的最少添加

Leetcode&#xff1a;使括号有效的最少添加 上代码 方法一&#xff1a;使用Deque 双向队列 /*** 方法一&#xff1a;使用Deque 双向队列* param s* return*/public int minAddToMakeValid(String s) {//1、将括号字符串转换为char[] 字符数组char[] data s.toCharArray();//2…

SDK 资源

目录 资源的使用 带资源的.exe文件的编译方式 向窗口发送消息 菜单 加载菜单 菜单消息 图标 光标 快捷键 字符串 资源的使用 在VS2019中&#xff0c;点击视图下的其他窗口&#xff0c;资源视图&#xff0c;就可以看到本项目的所有资源 鼠标右键添加-资源&#xff0c…

数据特征工程 | 主成分分析(Python)

特征抽取(feature extraction)和特征选择(feature selection)不一样,特征抽取是从原特征集中推导出有用的信息构成新的特征集。特征选择是从原特征集中选择一部分子集作为训练特征。 特征抽取将数据集从一个特征空间投影到了一个更低维度的特征空间。 主成分分析(princ…

C++设计模式_16_Adapter 适配器

Adapter 适配器也是属于“接口隔离”模式&#xff0c;也是间接思想在某一个层面的应用。 文章目录 1. 动机( Motivation)2. 模式定义3. 结构 (Structure)4. Adapter 适配器的代码实现5. 要点总结6. 其他参考 1. 动机( Motivation) 在软件系统中&#xff0c;由于应用环境的变化…

python:使用Scikit-image对遥感影像进行傅里叶变换特征提取(fourier)

作者:CSDN @ _养乐多_ 在本博客中,我们将介绍如何使用Scikit-Image来进行傅里叶变换特征提取(fourier),并且提供一个示例代码,演示了如何在单波段遥感图像上应用这些方法。 傅里叶变换特征提取是一种数学工具,用于将图像中的细节、纹理和边缘信息以不同频率的方式呈现…

[SpringCloud] Nacos 简介

目录 一、Nacos&#xff0c;启动&#xff01; 1、安装 Nacos 2、运行 Nacos 3、Nacos 服务注册 二、Nacos 服务多级存储模型 1、服务跨集群分配 2、NacosRule 负载均衡&#xff08;优先本地&#xff09; 3、服务实例的权重设置 4、环境隔离 三、Nacos 注册中心细节分…

私有云:【2】AD域的安装

私有云&#xff1a;【2】AD域的安装 1、使用vmwork创建虚拟机2、启动配置虚拟机3、安装域服务4、配置域服务器 1、使用vmwork创建虚拟机 新建虚拟机 稍后安装操作系统 选择win2012&#xff0c;如下图 设置名称及路径 分配硬盘大小&#xff0c;默认60G即可 镜像选择win2012的is…

【数据结构】数组和字符串(九):稀疏矩阵的链接存储:十字链表的插入、查找、删除操作

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表4.2.3三元组表的转置、加法、乘法、操作4.2.4十字链表0. 十字链表的创建、遍历打印、销毁1. 插入2. 查找3. 删除4. 主函数5. 代码…

C++学习day--22 宏和结构体

1、宏 1.1 为什么要使用宏 1、提高代码的可读性和可维护性 2、避免函数调用&#xff0c;提高程序效率 1.2 什么是宏 它是一种预处理器指令&#xff0c;在预编译阶段将宏名替换为后面的替换体 。 1.3 宏的定义 由三部分组成&#xff1a; #define WIDTH 960 三个部分分别是&…

Python 作用域:局部作用域、全局作用域和使用 global 关键字

变量只在创建它的区域内可用。这被称为作用域。 局部作用域 在函数内部创建的变量属于该函数的局部作用域&#xff0c;并且只能在该函数内部使用。 示例&#xff1a;在函数内部创建的变量在该函数内部可用&#xff1a; def myfunc():x 300print(x)myfunc()函数内部的函数 …