这里讨论的是多项的加法,直接看下面的程序代码:
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,如需转载请自行联系原作者