9 8 7 6 5 4 3 2 1 = 100
2018-09-19 3339
版权
举报
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介: 题目描述:现有一等式;9 8 7 6 5 4 3 2 1 = 100。为了使等式成立,需要在数字间填写加号或者减号(可以不填,但不能填入其他符号)。之间没有填入符号的数字组合成一个数。
题目描述:现有一等式;9 8 7 6 5 4 3 2 1 = 100。为了使等式成立,需要在数字间填写加号或者减号(可以不填,但不能填入其他符号)。之间没有填入符号的数字组合成一个数。例如;98 - 76 + 54 + 3 + 21 = 100 和 98 - 7 - 6 - 5 - 4 + 3 + 21 = 100。请编写代码找出所有符合等式的答案。
解决思路:
用暴力解法,一共9个数字,数字与数字之间有8个空,那么每个空有三种情况:加号、减号和空。那么一共有种情况。import java.util.Stack; /** * 1 2 3 4 5 6 7 8 9 = 110 * 在数字间填入加号或者减号(可以不填,但不能填入其它符号)使等式成立。 * 一种更好的方法是: * 每一个空隙之间都有三种可能,"+", "-", "",所以一共有3^8种可能。 */ public class Main { private static final char[] NUMBERS = {'1', '2', '3', '4', '5', '6', '7', '8', '9'}; private static final String[] OPERATORS = {"+", "-", ""}; private static final int RESULT = 100; // 计算结果 private static void sortAndCompute(int numIndex, String buffer) { // 说明到最后一个字符了 if(numIndex == NUMBERS.length - 1) { buffer += NUMBERS[numIndex]; String formula = buffer.toString(); if(sum(formula) == RESULT) { System.out.println(formula + " = " + RESULT); } return; } for(int operIndex = 0; operIndex < OPERATORS.length; ++operIndex) { buffer += NUMBERS[numIndex]; buffer += OPERATORS[operIndex]; sortAndCompute(numIndex + 1, buffer); // 消除前面两个已经添加的字符恢复原状,以便下一次循环的叠加 // 但是当中间连接符变为''的时候,则只删除buffer中的前面一个字符 buffer = operIndex != 2 ? buffer.substring(0, buffer.length() - 2) : buffer.substring(0, buffer.length() - 1); } } private static int sum(String formula) { if(formula == null || formula.trim().length() == 0) throw new IllegalArgumentException("formula is invalid!"); Stack<String> numStack = new Stack<String>(); Stack<String> operStack = new Stack<String>(); StringBuffer numBuffer = new StringBuffer(); formula += "#"; // 添加一个结束符到公式末尾便于计算 char[] chs = formula.toCharArray(); for(int index = 0; index < formula.length(); ++index) { if(chs[index] != '+' && chs[index] != '-' && chs[index] != '#') { numBuffer.append(chs[index]); //把数放进入,如果是9 8,则会拼接起来 } else { numStack.push(numBuffer.toString()); //将数放入stack numBuffer.delete(0, numBuffer.length()); //将buffer清空 if(operStack.isEmpty()){ operStack.push(chs[index] + ""); }else { int numAft = Integer.parseInt(numStack.pop()); //取一数 int numBef = Integer.parseInt(numStack.pop());//取另一个数 String oper = operStack.pop(); // 取符号 int sum = oper.equals("+") ? numBef + numAft : numBef - numAft; numStack.push(sum + ""); //将运算后的数压栈 operStack.push(chs[index] + ""); //将新符号压栈 } } } return Integer.parseInt(numStack.pop()); } public static void main(String[] args) { sortAndCompute(0, ""); } }
AI 代码解读
相关文章
|
6月前
|
揭秘LangChain+RAG如何重塑行业未来?保姆级实战演练,解锁大模型在各领域应用场景的神秘面纱!
【10月更文挑战第4天】随着AI技术的发展,大型语言模型在各行各业的应用愈发广泛,检索增强生成(RAG)技术成为推动企业智能化转型的关键。本文通过实战演练,展示了如何在LangChain框架内实施RAG技术,涵盖金融(智能风控与投资决策)、医疗(辅助诊断与病历分析)及教育(个性化学习推荐与智能答疑)三大领域。通过具体示例和部署方案,如整合金融数据、医疗信息以及学生学习资料,并利用RAG技术生成精准报告、诊断建议及个性化学习计划,为企业提供了切实可行的智能化解决方案。
250 5 5
|
阿里云免费云服务器ECS领取教程
2023阿里云免费云服务器ECS领取教程,个人和企业用户均可以申请,个人免费服务器1核2GB 每月750小时,企业u1服务器2核8GB免费使用3个月,阿里云百科分享阿里云免费服务器申请入口、个人和企业免费配置、申请资格条件及云服务器免费使用时长
1618 0 0
|
|
|
开放平台能为开发者带来什么价值?
2019杭州云栖大会大咖有约,由阿里云开放平台负责人圭多带来以“开放平台能为开发者带来什么价值?”为题的演讲。本文对阿里云的开放平台进行了详细的阐述,即对阿里云开放平台到底开放的是什么,开发者又被给予了哪些开发能力进行了详细的介绍,包括丰富完整的API产品体系,及如何让开发者更好享受技术红利?
8230 0 1
|
Apache Flink 进阶(八):详解 Metrics 原理与实战
Flink 提供的 Metrics 可以在 Flink 内部收集一些指标,通过这些指标让开发人员更好地理解作业或集群的状态。由于集群运行后很难发现内部的实际状况,跑得慢或快,是否异常等,开发人员无法实时查看所有的 Task 日志,比如作业很大或者有很多作业的情况下,该如何处理?此时 Metrics 可以很好的帮助开发人员了解作业的当前状况。
6348 0 1
|
相关知识
将矩阵 a=[1 2 3;4 5 6;7 8 9] 改变成 b=[3 6 9;2
10÷[9÷8÷(7÷6÷5÷4)÷3÷2]= .——青夏教育精英家教网——
等差数列{a n }中,若a 1 +a 4 +a 7 =9,a 3 +a 6 +
123 1 2 a=456 b=34 789 5 6
列竖式计算564×7=297×9=324×8=130×4=305×6=210×7= 题目和参考答案——青夏教育精英家教网——
玫瑰花数 一个四位数等于各位数字的四次方之和,则为玫瑰花数。如:1634=1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4
大家帮我分下类1颤藻2酵母菌3变形虫4小球藻5水绵6HIV7大肠杆菌8甲型H1N1流感病毒9肺炎双球菌,其中无核...大家帮我分下类1颤藻2酵母菌3变形虫4小球藻5水绵6HIV7大肠杆菌8甲型H1N1流感病毒9肺炎
估算208×3≈47×5≈395×8≈218×7= 题目和参考答案——青夏教育精英家教网——
下列项目哪些属于高新技术产业?1有机玻璃、2汽车离合器、3环保设备产业、4汽车配件、5医药胶囊、6医药化工、7污水处理、8金融服务、9PVC扣板、10电子元件、11电缆盘、12旅游、13粮食贸易
定义新运算提高题(回答要写出思考过程,否则,好的50悬赏金!)1.我们规定:=1,=1×2,=1×2×3,…求(1)6?;(2)如果x?=5040,求x.2.规定a·b=(a×k+b)÷(a×b),k为常数,已知5·6=6·5,求2·4
网址: 9 8 7 6 5 4 3 2 1 = 100 https://www.huajiangbk.com/newsview1786906.html
上一篇: SQLwhere 1=1 |
下一篇: 第十三弹 |
推荐分享

- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039