abc+cba=?满足条件的所有组合的简单算法实现_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > abc+cba=?满足条件的所有组合的简单算法实现

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

 2013/7/18 0:14:11  QuarterLifeForJava  程序员俱乐部  我要评论(0)
  • 摘要:packagetest;publicclassTest{/***其效率比常规算法效率缩短1/3*其为一种简单实现,必然存在更优算法*算法实现来自一道编程题:*已知abc+cba=1333,其中a,b,c均为一位数。*编程求出满足条件的a,b,c的所有组合。*/publicstaticvoidmain(String[]args){//用户输入的一个数intnum=122531;//统计有几种方案intcount=0;//通过算法定义循环从哪个数开始finalintstart=start(num)
  • 标签:实现 算法
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;
	}
}
发表评论
用户名: 匿名