P1618 三连击 (DFS+回溯)

import java.util.Scanner;

public class P1618 {
	static int A,B,C;
	static int a,b,c;
	static boolean[] flag = new boolean[10];
	static int[] arr = new int[10];
	static StringBuilder sb = new StringBuilder();
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		A = sc.nextInt();
		B = sc.nextInt();
		C = sc.nextInt();
		dfs(1);
		if("".equals(sb.toString())) {
			System.out.println("No!!!");
		}else {
			System.out.println(sb);
		}
	}
	private static void dfs(int pos) {
		if(pos==10) {
			a = arr[1]*100+arr[2]*10+arr[3];
			b = arr[4]*100+arr[5]*10+arr[6];
			c = arr[7]*100+arr[8]*10+arr[9];
			if(A*b==a*B && A*c==a*C && B*c==b*C) {
				sb.append(a+" "+b+" "+c);
				sb.append("\n");
			}
			return;
		}
		for(int i=1;i<=9;i++) {
			if(flag[i]==false) {
				arr[pos] = i;
				flag[i] = true;
				dfs(pos+1);
				flag[i] = false;
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_28635317/article/details/114639475