java 蓝桥杯 趣味算式
来源:互联网 发布:java四种访问修饰符 编辑:程序博客网 时间:2024/05/18 03:35
匪警请拨110,即使手机欠费也可拨通!
为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!
某批警察叔叔正在进行智力训练:
1 2 3 4 5 6 7 8 9 = 110;
请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。
请你利用计算机的优势,帮助警察叔叔快速找到所有答案。
每个答案占一行。形如:
12+34+56+7-8+9
123+4+5+67-89
……
已知的两个答案可以输出,但不计分。
各个答案的前后顺序不重要。
方法一:
public class Main{static char k[]={' ','+','-'};public static void main(String args[]) //遍历所有 {for(int a=0;a<3;a++)for(int b=0;b<3;b++)for(int c=0;c<3;c++)for(int d=0;d<3;d++)for(int e=0;e<3;e++)for(int f=0;f<3;f++)for(int g=0;g<3;g++)for(int h=0;h<3;h++){String str=""+1+k[a]+2+k[b]+3+k[c]+4+k[d]+5+k[e]+6+k[f]+7+k[g]+8+k[h]+9;Check(str);}}public static void Check(String str){String str1=str.replace(" ","");int sum=0;int count=0;String str2="";char str3=' ',str4;for(int i=0;i<str1.length();i++){if(str1.charAt(i)!='-'&&str1.charAt(i)!='+'){str2=str2+str1.charAt(i);}else {if(count==0) {sum=Integer.valueOf(str2);} //主要用于第一个数的记录if(count==1){if(str3=='+')sum+=Integer.valueOf(str2); //举例 1+2-3 这里的str3是加号 遇到两次加减符号才做1+2这个运算else sum-=Integer.valueOf(str2);count=0;}str2=""; //为下次计数做前提str3=str1.charAt(i); //这里才记录上面那个例子中的减号count++;}}if(str3=='+')sum+=Integer.valueOf(str2); //处理最后一个运算符else sum-=Integer.valueOf(str2);if(sum==110)System.out.println(str1);}}
public class Main{static char k[]={' ','+','-'};public static void main(String args[]) {String str="123456789";dfs(str,1);}public static void dfs(String str,int n) //遍历所有 {if(n==9)Check(str);else {dfs(str.replace(n+"", n+"+"),n+1);dfs(str.replace(n+"", n+"-"),n+1);dfs(str,n+1);}}public static void Check(String str){String str1=str.replace(" ","");int sum=0;int count=0;String str2="";char str3=' ',str4;for(int i=0;i<str1.length();i++){if(str1.charAt(i)!='-'&&str1.charAt(i)!='+'){str2=str2+str1.charAt(i);}else {if(count==0) {sum=Integer.valueOf(str2);} //主要用于第一个数的记录if(count==1){if(str3=='+')sum+=Integer.valueOf(str2); //举例 1+2-3 这里的str3是加号 遇到两次加减符号才做1+2这个运算else sum-=Integer.valueOf(str2);count=0;}str2=""; //为下次计数做前提str3=str1.charAt(i); //这里才记录上面那个例子中的减号count++;}}if(str3=='+')sum+=Integer.valueOf(str2); //处理最后一个运算符else sum-=Integer.valueOf(str2);if(sum==110)System.out.println(str1);}}
0 0
- java 蓝桥杯 趣味算式
- 南桥杯Java趣味算式
- 蓝桥杯 趣味算式
- 蓝桥杯之趣味算式
- 趣味算式(蓝桥杯)
- 【蓝桥杯】【趣味算式】
- 趣味算式——蓝桥杯2012年Java预赛
- 趣味算式 蓝桥杯 110 递归
- 蓝桥杯——趣味算式
- 趣味算式
- 趣味算式
- 趣味算式
- 趣味算式
- 第三届蓝桥杯预赛java趣味算式
- Java - 趣味题(4) --- 魔术乘法算式
- 2016蓝桥杯假期任务之《趣味算式》
- 软件大赛--趣味算式
- 趣味算式填符号
- 计算机网络基本概念
- 在线观看视频两种声音的解决办法
- Linux下安装jdk8
- 模型论对微积分的应用
- ES6学习-1 (let)
- java 蓝桥杯 趣味算式
- 【10天轻松掌握C语言】2、C语言必备基础知识
- thinkphp 中的伪静态问题,不同环境下的伪静态写法
- MongoDB学习(六)数据库的备份、还原、导入及导出
- <jsp:include>和<%@include%>的区别
- 线性单链表 初始化 插入 取出 头插法 合并升序排列
- Spring事务的传播行为,每个传播行为的区别 ;Spring 事务的隔离性,每个隔离性的区别
- 为什么java Hashmap 中的加载因子是默认为0.75
- 本文将介绍如何搭建服务器