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

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

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]


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值