您的位置:首页 > 理论基础 > 数据结构算法

【数据结构与算法】数组应用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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 数组 数据结构