现在的位置: 首页 > 综合 > 正文

巩固一下基础,java多项式相加

2018年05月12日 ⁄ 综合 ⁄ 共 1420字 ⁄ 字号 评论关闭
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;
	}
}

抱歉!评论已关闭.