【数据结构与算法】数组应用4:多项式计算Java版
2017-10-28 11:01
846 查看
这里讨论的是多项的加法,直接看下面的程序代码:
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)); } }执行结果如下:
[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]
相关文章推荐
- 【数据结构与算法】数组应用3:稀疏矩阵压缩(Java实现)
- 【数据结构与算法】数组应用2:矩阵转置(Java实现)
- 【数据结构与算法】数组应用1:矩阵乘法(Java实现)
- JAVA数据结构与算法-第二章-数组
- Java数据结构与算法之数组(一)
- Java数据结构与算法之数组排序——奇偶排序
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- #数据结构与算法学习笔记#剑指Offer1:二维数组中的查找(JAVA)
- 数据结构与算法(Java描述)-5、循环链表仿真链表以及循环链表应用
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- 【数据结构与算法】第三章 表c实现应用一-----------多项式
- 数据结构与算法----数学应用之一元多项式
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- [数据结构与算法]栈的应用:计算 2*2+(10-2)/(101-50*2)*3-2+5 表达式的值
- Java数据结构与算法--数组
- 冒泡排序 Java数据结构与算法
- 【数据结构与算法基础】栈及其应用后缀、中缀表达式 / Stack and postfix/infix expression
- 选择排序 Java数据结构与算法
- 数据结构与算法——多项式