在1,2,…,9(保持这个顺序)之间可任意放+或-或都不放使其结果等于100

需求:写程序在1,2,…,9(保持这个顺序)之间可任意放+或-或都不放使其结果等于100,输出所有可能的放法。例如:1 + 2 + 3 – 4 + 5 + 6 + 78 + 9 = 100。


分析:

   我们可以理解为有8个位置可以用来放置:“+”、“-”、“”,也就是说表达式的左侧一共有3^8=6561种可能。我们只需递归出它们同时检表达式的结果是否等于100即可。


实现:

   根据上面的分析,在实现的过程当中有两个问题:

   1:怎样得到所有的表达式;

   2:如何求表达式的值。


   第一个问题思路:用递归插入“+”、“-”、“”,直到插入最后一个数字;

   第二个问题的思路:使用栈先将一般的中缀表达式转成后缀表达式,然后再用栈将后缀表达式的值求出,具体思路可以去看下栈在计算表达式值的应用。参考:中缀表达式转后缀表达式并求值


代码:

import java.util.Stack;
import java.util.Vector;
public class Intermediate {
    static String[] symbol = { "+", "-", "" };
    static String[] num1 = { "1", "2", "3", "4", "5", "6", "7", "8", "9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值