java叔叔_JAVA蓝桥杯 警察叔叔训练智力

/*匪警请拨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

......

已知的两个答案可以输出,但不计分。

各个答案的前后顺序不重要。

注意:

请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!

请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

请不要使用package语句。

源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。*/

public classDemo14 {//遍历所有情况

public static voidfun(String s) {char[] c =s.toCharArray();

StringBuffer sb= new StringBuffer(); //记录 组成的式子

int len = s.length()-1; //字符串长度 - 1

int[] sign = new int[len]; //sign用来标记符号, 最多有(s的长度-1)个符号//从后身前添加符号

while(sign[0]<3){ //最前面的判定符号的值若 >=3 则结束循环

sb.append(c[0]); //添加首元素

for(int i=0;i

sb.append("+");

}else if(sign[i]==2){//值为2添加"-"号

sb.append("-");

}

sb.append(c[i+1]); //不管添加不添加+-号,都添加后一个元素

}

check(sb.toString());//验证并输出

sb.setLength(0); //清空sb

sign[len-1]++; //每循环一次,最后一个符号值加1

for(int i=len-1;i>0;i--){ //当值等于3时,实现逢3进位

if(sign[i]==3){

sign[i]= 0; //sign[i] 归零

sign[i-1]++; //sign[i-1]进位

}

}

}

}//验证并输出

public static voidcheck(String str){

String[] s= str.split("[\\+]|[-]"); //得到全部数字

String sign = str.replaceAll("\\d*", ""); //得到全部符号(+-)

int sum = Integer.parseInt(s[0]); //把第一个数字给sum

for(int i=0;i

sum+= Integer.parseInt(s[i+1]);break;case '-':

sum-= Integer.parseInt(s[i+1]);break;

}

}if(sum==110){ //符合条件输出

System.out.println(str);

}

}//主函数

public static voidmain(String[] args){

String s= "123456789";

fun(s);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值