蓝桥杯--算法提高 寻找三位数(java)

资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
  将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成
  1:2:3的比例,试求出所有满足条件的三个三位数。
  例如:三个三位数192,384,576满足以上条件。
输入格式
  无输入文件
输出格式
  输出每行有三个数,为满足题设三位数。各行为满足要求的不同解。
————————————————————————————————————————————————
全排列+check

public class Main {
	static int[] arr = {1,2,3,4,5,6,7,8,9};
	
	public static void main(String[] args) {
		 f(0);
	}

	private static void f(int k) {//确定到arr的第k位
		if(k == arr.length) {
			int a = arr[0] * 100 + arr[1] * 10 + arr[2];
			int b = arr[3] * 100 + arr[4] * 10 + arr[5];
			int c = arr[6] * 100 + arr[7] * 10 + arr[8];
			if(check(a, b, c)) {
				System.out.println(a + " " + b + " " + c);
			}
		}
		for(int i = k;i < arr.length;i++) {
			int t = arr[k];
			arr[k] = arr[i];
			arr[i] = t;
			
			f(k + 1);
			
			t = arr[k];
			arr[k] = arr[i];
			arr[i] = t;
		}
	}

	private static boolean check(int a, int b, int c) {
		return b == a * 2 && c == a * 3;
	}
}
发布了177 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/QinLaoDeMaChu/article/details/105700091