【数据结构与算法】数组应用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,如需转载请自行联系原作者
相关文章
|
1天前
|
存储 算法 Java
数据结构与算法 数组和链表
数据结构与算法 数组和链表
6 0
|
1天前
|
存储 索引
深入浅出数据结构之数组
深入浅出数据结构之数组
|
1天前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
13 0
|
2天前
|
传感器 机器人 Java
使用Java构建机器人应用
使用Java构建机器人应用
5 0
|
2天前
|
分布式计算 负载均衡 Java
构建高可用性Java应用:介绍分布式系统设计与开发
构建高可用性Java应用:介绍分布式系统设计与开发
7 0
|
2天前
|
设计模式 算法 Java
设计模式在Java开发中的应用
设计模式在Java开发中的应用
14 0
|
3天前
|
算法 测试技术 C++
【栈 最小公倍数 最大公约数】2197. 替换数组中的非互质数
【栈 最小公倍数 最大公约数】2197. 替换数组中的非互质数
【栈 最小公倍数 最大公约数】2197. 替换数组中的非互质数
|
3天前
|
分布式计算 Java 大数据
Java语言主要应用领域
【5月更文挑战第7天】Java在嵌入式系统中以低至130KB的占用展现可靠性,实现“一次编写,到处运行”。在大数据领域,Java通过Hadoop、Hbase、Accumulo和ElasticSearch等工具发挥关键作用。Java也是Eclipse、IntelliJ IDEA和NetBeans等开发工具的基础。广泛应用于电商网站和金融服务器系统,即便在J2ME式微后,仍能在部分低端手机中找到其踪影。
15 4
|
3天前
|
算法 Java 机器人
Java在嵌入式领域的应用
【5月更文挑战第7天】Java广泛应用于消费产品(如智能电视、机顶盒、数码相机)、工业控制(PLC、DCS、FCS)、通信(交换机、路由器、基站)、智能仪器、机器人、计算机外部设备、军事电子及太空科学,涵盖从家用到高科技领域的嵌入式系统开发。
15 4
|
3天前
|
机器学习/深度学习 人工智能 分布式计算
JAVA编程语言在人工智能领域的应用
Java是由Sun Microsystems(已被Oracle收购)于1995年推出的一种跨平台编程语言。它具有面向对象、可移植、高效和安全等特性,成为了广泛应用于企业级应用开发的编程语言之一。
44 21