问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA实现5 5 5 5 5=2填运算符号,使等式成立

发布网友 发布时间:2022-05-01 23:46

我来回答

5个回答

热心网友 时间:2022-06-25 05:42

挺好玩的一个东西,写着玩儿了.

用递归实现了一个, 可以自定义 5 5 5 5 ,也可以额  5 5 6 6 , 也可以 5 5 5 6 6 6 

下面是代码

import java.util.ArrayList;
import java.util.List;


public class TestComputeUtil {
public static void main(String[] args) {
List<String> rightExpressions = getRightExpressions(7, 6,5,5,7);
System.out.println(rightExpressions);
}
/**  
 * 工具方法,得到符合期望值的四则运算表达式,如果结果集size为0,则说明没有结果  
 *
 * <p>工具方法,得到正确的四则表达式</p>
 * @param result 期望得到的结果
 * @param parameter 所有的待计算的数字 例如:6,5,5,7
 * @return List<String>  复合要求的结果,如果size为0 ,则说明没有符合结果的内容
 * @throws  
 */ 
public static List<String> getRightExpressions(int result , int...parameter){
List<String> resultExpressions = new ArrayList<String>();
if(parameter == null){
return resultExpressions; 
}
computeResult(resultExpressions,new StringBuilder().append(parameter[0]), result , parameter[0] , 1, parameter);
return resultExpressions;
}
/**  
 * 根据指针(index)的位置,来进行四则运算.  
 *
 * <p>根据指针(index)的位置,来进行四则运算.</p>
 * @param resultExpressions 最终的结果集合,这里省事儿了,直接传进去了,当然,这种方法并不好,但省事儿,你懂得,哈哈
 * @param expression 指针(index)前面所有的四则运算表达式
 * @param result 期望的计算结果
 * @param stepResult 指针(index)前面所有的四则运算表达式的结果
 * @param index 指针位置
 * @param parameter 参数数组   
 * @throws  
 */ 
private static void computeResult(List<String> resultExpressions,StringBuilder expression , int result ,Integer stepResult,int index , int[] parameter){
if(parameter.length >= index+1){
computeResult(resultExpressions, expression, result, stepResult, index, parameter, CalculationSymbols.ADD);
computeResult(resultExpressions, expression, result, stepResult, index, parameter, CalculationSymbols.SUB);
computeResult(resultExpressions, expression, result, stepResult, index, parameter, CalculationSymbols.MULT);
computeResult(resultExpressions, expression, result, stepResult, index, parameter, CalculationSymbols.DIV);
}else {
if(result == stepResult){
resultExpressions.add(expression.toString());
}
}
}
/**  
 *   一个计算流程包括递归调用computeResult(List<String> resultExpressions,StringBuilder expression , int result ,Integer stepResult,int index , int[] parameter)这个方法
 *
 * <p>一个计算流程 , 在这里加减乘除都是一个完整的计算流程.如果以后还想增加别的运算符号的话,只需要修改一下计算方法,以及枚举类.便于扩充</p>
 * @param resultExpressions 
 * @param expression
 * @param result
 * @param stepResult
 * @param index
 * @param parameter
 * @param sign void   
 * @throws  
 */ 
private static void computeResult(List<String> resultExpressions,StringBuilder expression , int result ,Integer stepResult,int index , int[] parameter , CalculationSymbols sign){
StringBuilder newExpression = new StringBuilder(expression);
int newResult = computeResult(stepResult, parameter[index], sign, newExpression);
computeResult(resultExpressions, newExpression, result, newResult, index+1, parameter);
}
/**
 * 计算  
 *
 * <p>计算</p>
 * @param left 
 * @param right
 * @param sign
 * @return int   
 * @throws  
 */ 
private static int computeResult(int left , int right , CalculationSymbols sign, StringBuilder expression){
switch (sign) {
case ADD:
expression.append("+").append(right);
return left + right;
case SUB:
expression.append("-").append(right);
return left - right;
case MULT:
expression.append("*").append(right);
return left * right;
case DIV:
expression.append("/").append(right);
return left / right;
default:
throw new UnsupportedOperationException("不支持的操作类型!");
}
}

}
/**  
 * 计算符号枚举
 * 
 * <p>计算符号枚举</p> 
 * @author an 
 * @version V1.0  
 */ 
enum CalculationSymbols{
ADD,SUB,MULT,DIV
}


额,刚看到了一个问题,是这样的,不能用Integer , 需要把所有的Integer给替换成为Double,因为,1/2 = 0 ,你懂的..只需要修改参数类型,以及计算的地方,即可

手打~~

热心网友 时间:2022-06-25 05:42

/*我说下思路:有5个数字,有4个空隔要填写,所以可以把这几个运行符放在一个字符数组里,然后去
*遍历地填写到4个空隔中,比如第一次是5+5+5+5+5 第二次就 5+5+5+5-5 .....然后再解析这
*个字符串,看答案是不是等于2(至于怎么解析这个加减乘除字符串可以参考这里:
* http://zhidao.baidu.com/question/83601633.html)
*/

热心网友 时间:2022-06-25 05:43

1、刚刚是从快速模式下写的问题,不好意思没看清。
2、看了具体要求,这个需要编程实现才可以。
符号就4个,填4个,用穷举解决这个问题最简单了,复杂度也就4*4。
试下看吧。

热心网友 时间:2022-06-25 05:44

(5+5)*5/(5*5)=2

热心网友 时间:2022-06-25 05:44

5x5-5x5=0


声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
股骨头坏死手术方式 退订金没有收据了怎么办 泸州台湾通行证外地人补办时间 运动手表安全吗(运动手表对身体有害吗) 扫地机器人随机式和规划式的区别 茶怎么喝才正确 如何查找电线接头 炸鱼片的做法 如何制作炸鱼片 福建泉州哪里有织带厂在招工 Apple 苹果 MacBook Air 2014款-适用对象 性质恶劣是什么意思 5 5 5 5 5=2 用加减乘除使算式成立 恶劣跟严重是一个意思吗 5 5 5 5 5=2 填上运算符号使等式成立 5 5 5 5 5=2 什么是人品恶劣? 5什么5什么5什么5等于2,运用加减乘除法,急 “你说话的态度很恶劣”这句话意思是什么?“恶劣”的含义又是什么? 恶劣的意思 5+2=?代表什么含义 恶劣是什么意思?? 5()5()5()5=2用+-×÷ 恶劣是什么意思 5 5 5 5 5=2怎样填运算符号? 5等于二分之几? 恶劣 是什么意思 5=2,那么25=() 恶劣的意思是什么? 5=2??? 该填啥呢 剧本杀5=2什么意思 恶劣不堪的意思? 5 5 5 5 5=2怎样填运算符号 恶劣的反义词是什么? 5口5口5口5口5=2 5 5 5 5 5=2 怎样填运算符号?如题 谢谢了 10÷5=2表示什么意思 5 5 5 5 5=2如何计算 填加减乘除和括号5 5 5 5 5=2问题 长门秽土转生后第几集出场? 火影忍者中有一集是被秽土转生的鼬和长门都坐在石狮子上是哪一集? 火影忍者哪一集秽土转生的长门VS秽土转生的鼬 我看到火影(动画)角都飞段等一群人被秽土转生了,这是哪一集? 火影忍者哪一集秽土转生的长门VS秽土转生的鼬、鸣人和奇拉比? oppoa5怎么拍黑白照片? 京东金条查额度上征信吗 像下图那种黑底的产品图片是怎么拍出来的呀,求详细操作步骤 如何查询HABA真伪 日本带来的haba为什么没有防伪码 高希霸雪茄小号怎么分辨真假,为什么我买的口感不一样,味道不一样_百度问一问 科颜氏淡斑精华求鉴定真伪!