package cn.ffr.multi;
import java.util.ArrayList;
import java.util.List;
/**
* 多项式的加
* @author User
*
*/
public class Multinominal {
/**
* 多项式相加
* +8X^2-5X^4+3X^5+3X^6+3X^7
* @param args
*/
public static void main(String[] args) {
List<Node> m1 = new ArrayList<Node>();
List<Node> m2 = new ArrayList<Node>();
m1.add(new Node(3,1));
m1.add(new Node(4,2));
m1.add(new Node(3,5));
m1.add(new Node(3,6));
m2.add(new Node(-3,1));
m2.add(new Node(4,2));
m2.add(new Node(-5,4));
m2.add(new Node(3,7));
List<Node> result = add(m1, m2);
for(Node n : result){
System.out.print(n);
}
}
/**
* 多项式相加
* @param m1
* @param m2
* @return
*/
public static List<Node> add(List<Node> m1, List<Node> m2){
List<Node> result = new ArrayList<Node>();
int i = 0, j= 0;
for(; i < m1.size() && j < m2.size();){
Node n1 = m1.get(i);
Node n2 = m2.get(j);
if(n1.getExp() < n2.getExp()){
result.add(n1);
i++;
continue;
}else if(n1.getExp().equals(n2.getExp())){
if(n1.getCoe() +n2.getCoe() != 0){
result.add(new Node(n1.getCoe() + n2.getCoe(), n1.getExp()));
}
i++;j++;continue;
}else{
result.add(n2);
j++;
continue;
}
}
while(i < m1.size()){
result.add(m1.get(i));
i++;
}
while(j < m2.size()){
result.add(m2.get(j));
j++;
}
return result;
}
}
class Node {
private Integer coe;//系数
private Integer exp;//指数
public Node() {
super();
}
public Node(Integer coe, Integer exp) {
super();
this.coe = coe;
this.exp = exp;
}
public Integer getCoe() {
return coe;
}
public void setCoe(Integer coe) {
this.coe = coe;
}
public Integer getExp() {
return exp;
}
public void setExp(Integer exp) {
this.exp = exp;
}
@Override
public String toString() {
return (coe>0?"+":"")+coe+"X^"+exp;
}
}
巩固一下基础,java多项式相加
最新推荐文章于 2021-02-13 02:33:29 发布