【数据结构与算法】数组应用4:多项式计算Java版

简介:

    这里讨论的是多项的加法,直接看下面的程序代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package  chapter02;
 
import  java.util.Arrays;
 
/*
  * 多项式加法(简单版)
  * A(x) = 2x^5 + 3x^4 + 0x^3 + 5x^2 + 4x^1 +1x^0
  * B(x) =        3x^4 + 2x^3 + 1x^2 + 1x^1 + 2x^0
 
  * A(x) + B(x) = 
  * C(x) = 2x^5 + 6x^5 + 2x^3 + 6x^2 + 5x^1 + 3x^0
 
  * 采用一维数组保存,第一个元素保存多项式的最高次幂,后面依次保存每项的次数
  * A(x) = [5, 2, 3, 0, 5, 4, 1]
  * B(x) = [3,    2, 1, 1, 2, 2]
  * A(x) + B(x) =
  * C(x) = [5, 2, 5, 1, 6, 6, 3]
 
  */
public  class  CH02_08 {
     public  static  void  main(String[] args) {
         //定义两个多项式的数组
         int [] arr1 = { 5 2 3 0 5 4 1 };
         int [] arr2 = { 3 ,     2 1 1 2 2 };
         
         //输出两个多项式数组
         System.out.println(Arrays.toString(arr1));
         System.out.println(Arrays.toString(arr2));
         
         //定义结果多项式的数组
         int  arrResultLen = arr1.length > arr2.length ? arr1.length:arr2.length;    //数组长度为拥有较多项的多项式的数组的长度
         int [] arrResult =  new  int [arrResultLen];
         
         //初始化arrResult
         Arrays.fill(arrResult,  0 );
         
         //输出arrResult
         System.out.println();
         System.out.println(Arrays.toString(arrResult));
         
         //开始计算多项式的加法
         int [] bigArr = arr1.length == arrResultLen ? arr1:arr2;       //找出项较多的多项式数组
         int [] smallArr = arr1.length == arrResultLen ? arr2:arr1;     //找出项较少的多项式数组
         for ( int  bigLen = bigArr.length -  1 , smallLen = smallArr.length -  1 ; bigLen >=  0 ; bigLen--, smallLen--){
             //逆序数组进行计算,这样就可以实现项的幂一一对应
             if (smallLen >  0 ){
                 //小的多项式数组的第0项只是表示最高次幂,对实际计算没有用处,这里只计算小的多项式数组第0项之后的值
                 arrResult[bigLen] = bigArr[bigLen] + smallArr[smallLen];
             else  {
                 //再往前走,如果smallArr已经到达了第0项,则只把bigArr中相应的值直接保存到arrResult中
                 arrResult[bigLen] = bigArr[bigLen];
             }
         }
         
         //输出结果多项式的数组
         System.out.println();
         System.out.println(Arrays.toString(arrResult));
         
     }
}

    执行结果如下:

1
2
3
4
5
6
[5, 2, 3, 0, 5, 4, 1]
[3, 2, 1, 1, 2, 2]
 
[0, 0, 0, 0, 0, 0, 0]
 
[5, 2, 5, 1, 6, 6, 3]




本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1976984,如需转载请自行联系原作者
相关文章
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的优化算法及其应用
本文旨在探讨深度学习中常用的优化算法,包括梯度下降、动量方法、AdaGrad、RMSProp和Adam等。通过分析每种算法的原理、优缺点及适用场景,揭示它们在训练深度神经网络过程中的关键作用。同时,结合具体实例展示这些优化算法在实际应用中的效果,为读者提供选择合适优化算法的参考依据。
|
6天前
|
算法 前端开发 机器人
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
|
13天前
|
算法 调度
贪心算法基本概念与应用场景
尽管贪心算法在许多问题中都非常有效,但它并不总是会产生最优解。因此,在应用贪心算法前,重要的是先分析问题是否适合采用贪心策略。一些问题可能需要通过动态规划或回溯等其他算法来解决,以找到确切的全局最优解。
44 1
WK
|
15天前
|
机器学习/深度学习 算法 数据挖掘
PSO算法的应用场景有哪些
粒子群优化算法(PSO)因其实现简单、高效灵活,在众多领域广泛应用。其主要场景包括:神经网络训练、工程设计、电力系统经济调度与配电网络重构、数据挖掘中的聚类与分类、控制工程中的参数整定、机器人路径规划、图像处理、生物信息学及物流配送和交通管理等。PSO能处理复杂优化问题,快速找到全局最优解或近似解,展现出强大的应用潜力。
WK
19 1
|
24天前
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
6天前
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
6天前
|
存储 Java
java数据结构,线性表顺序存储(数组)的实现
文章介绍了Java中线性表顺序存储(数组)的实现。线性表是数据结构的一种,它使用数组来实现。文章详细描述了线性表的基本操作,如增加、查找、删除、修改元素,以及其他操作如遍历、清空、求长度等。同时,提供了完整的Java代码实现,包括MyList接口和MyLinearList实现类。通过main函数的测试代码,展示了如何使用这些方法操作线性表。
|
1月前
|
机器学习/深度学习 算法 数据挖掘
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
|
2月前
|
算法 C++
A : DS串应用–KMP算法
这篇文章提供了KMP算法的C++实现,包括计算模式串的next数组和在主串中查找模式串位置的函数,用于演示KMP算法的基本应用。
|
2月前
|
缓存 算法 前端开发
深入理解缓存淘汰策略:LRU和LFU算法的解析与应用
【8月更文挑战第25天】在计算机科学领域,高效管理资源对于提升系统性能至关重要。内存缓存作为一种加速数据读取的有效方法,其管理策略直接影响整体性能。本文重点介绍两种常用的缓存淘汰算法:LRU(最近最少使用)和LFU(最不经常使用)。LRU算法依据数据最近是否被访问来进行淘汰决策;而LFU算法则根据数据的访问频率做出判断。这两种算法各有特点,适用于不同的应用场景。通过深入分析这两种算法的原理、实现方式及适用场景,本文旨在帮助开发者更好地理解缓存管理机制,从而在实际应用中作出更合理的选择,有效提升系统性能和用户体验。
81 1
下一篇
无影云桌面