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;
}
}