编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是 100 的程序,并输出所有的可能性
来源:互联网 发布:知乎 教育培训 编辑:程序博客网 时间:2024/06/05 10:44
前几天在博客园的外文翻译里看到一篇《每个程序员1小时内必须解决的5个编程问题》,前4题还不是很难,但是第五题就有点看似简单,写起来却很蛋疼。
(虽然头部和其他博文有点相似但是解决办法不太一样,而且好理解)
题目是这样的:
编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是 100 的程序,并输出所有的可能性。
例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。
你能在多长时间写完呢?
下面是我的解法(Java):
@Test public void test05() throws ScriptException{ String stringArray [] = new String[]{"+","-",""}; List<String> resultList=new ArrayList<String>(); for(int a=0;a<stringArray.length;a++){ for(int b=0;b<stringArray.length;b++){ for(int c=0;c<stringArray.length;c++){ for(int d=0;d<stringArray.length;d++){ for(int e=0;e<stringArray.length;e++){ for(int f=0;f<stringArray.length;f++){ for(int g=0;g<stringArray.length;g++){ for(int h=0;h<stringArray.length;h++){ String result=1+stringArray[a]+2+stringArray[b]+ 3+stringArray[c]+4+stringArray[d]+5+stringArray[e]+ 6+stringArray[f]+7+stringArray[g]+8+stringArray[h]+9; if(getSum(result)==100){ resultList.add(result); } } } } } } } } } for(int i=0;i<resultList.size();i++){ System.out.println(resultList.get(i)+"=="+getSum(resultList.get(i))); } } public int getSum(String str) throws ScriptException{ ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript"); double d = (double) se.eval(str); //System.out.println(d); return (int)d; }
基本思路就是:暴力破解,先生成表达式字符串,然后对表达式字符串进行计算。
阅读全文
1 0
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是 100 的程序,并输出所有的可能性。
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
- 文章标题编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是 100 的程序,并输出所有的可能性
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34–5 + 67–8 + 9 = 100。
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是 100 的程序,并输出所有的可能性。 例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100
- 用java编写在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100
- (scala实现) 在1到9(顺序不能变)之间插入+或-或什么都不插入,使得计算结果总是100
- 增加一个复选框到上一个程序中使得选中或不选中复选框时插入的文字不同
- 编写程序输出1到100之间出现数字9的所有数字
- 在1,2,…,9(保持这个顺序)之间可任意放+或-或都不放使其结果等于100
- 编写程序,用一个 for 循环计算1+3+5+7 + ……+99的值,并输出计算结果。
- presentViewController 是否有系统导航条
- js笔记:Number()、parseInt() 和 parseFloat() 的区别
- web worker+highcharts动态实现可视化数据展示
- TBF(Trajectory Based Forwarding)路由协议
- linux下安装zookeeper
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是 100 的程序,并输出所有的可能性
- 黑科技-------咖啡装逼利器
- 关于 移动 电信 联通 运营商数据抓取 通话记录 京东淘宝学信网数据抓取 失信报告,网贷黑名单,央行征信报告数据抓取
- 来听听外国UX设计师的22句话
- Lua 学习笔记——metatable和__index
- mysql innodb引擎 sql优化经验总结
- 使用原生方法获取地址栏参数
- Centos7安装并配置mysql5.6
- Linux-ubuntu连接投影仪失败(分辨率不匹配)问题解决