算法设计与分析: 6-11 无优先级运算问题

本文介绍了如何解决无优先级运算问题,特别是利用优先队列式的分支限界法,来找到用最少的运算次数组合n个正整数得到目标整数m的算法。内容包括问题描述、Java实现以及输入输出示例。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值