6-11 无优先级运算问题
问题描述
给定 n 个正整数和 4 个运算符+、-、*、/,且运算符无优先级,如 2+3*5=25。对于任意给定的整数 m,试设计一个算法,用以上给出的 n 个数和 4 个运算符,产生整数 m, 且用的运算次数最少。给出的 n 个数中每个数最多只能用 1 次,但每种运算符可以任意使用。
对于给定的 n 个正整数,设计一个优先队列式分支限界法,用最少的无优先级运算次数 产生整数 m。
数据输入:
第一行有 2 个正整数 n 和 m。第 2 行是给定的用于运算 的 n 个正整数。
Java
package Chapter6FenZhiXianJieFa;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
public class WuYouXianJiYunSuan {
private static class Arit implements Comparable{
int dep;
int[] num,oper,flag;
public int compareTo(Object o){
Arit arit = (Arit) o;
int result = Integer.compare(dep, arit.dep);
return result;
}
private void arit(int n){
num = new int[n];
oper = new int[n];
flag = new int[n];
for(int i=0; i<n; i++) nu