Java实现abc输出为cba,abc+cba=?满足条件的所有组合的简单算法实现

class="java">

package test;

public class Test {

/**

*其效率比常规算法效率缩短1/3

*其为一种简单实现,必然存在更优算法

*算法实现来自一道编程题:

*已知abc+cba=1333,其中a,b,c均为一位数。

*编程求出满足条件的a,b,c的所有组合。

*/

public static void main(String[] args) {

//用户输入的一个数

int num = 122531;

//统计有几种方案

int count = 0;

//通过算法定义循环从哪个数开始

final int start = start(num);

//通过算法定义循环从哪个数结束

final int end = end(num);

//打印出符合条件的结果

for (int i = start; i <= end; i++) {

if((i+result(i))==num){

count++;

System.out.println(i+"+"+result(i)+"="+num);

}

}

System.out.println("共有"+count+"种方案");

}

public static int start(int num){

int x = num/3;

int l = String.valueOf(x).length();

int value = 1;

for (int i = 1; i < l; i++) {

value = 10*value;

}

return x-value;

}

public static int end(int num){

int x = num/3;

int l = String.valueOf(x).length();

int value = 1;

for (int i = 1; i <= l; i++) {

value = 10*value;

}

return value-1;

}

public static int result(int x){

StringBuilder sb = new StringBuilder();

for (int i = 0; i < String.valueOf(x).length(); i++) {

sb.append(String.valueOf(x).charAt(i));

}

int y = Integer.parseInt(sb.reverse().toString());

return y;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值