MENU

第六届蓝桥杯 Java A—— 九数分三组

March 11, 2019 • Read: 3077 • 算法阅读设置

1~9 的数字可以组成 3 个 3 位数,设为:A,B,C, 现在要求满足如下关系:
B = 2 * A
C = 3 * A

请你写出 A 的所有可能答案,数字间用空格分开,数字按升序排列。

  • import java.util.Set;
  • import java.util.TreeSet;
  • public class Main {
  • static int[] book = new int[9];
  • static int[] res = new int[9];
  • static StringBuilder a;
  • static StringBuilder b;
  • static StringBuilder c;
  • static Set<String> set = new TreeSet<String>();
  • public static void main(String[] args) {
  • dfs(0);
  • for (String s : set)
  • System.out.print(s + " ");
  • }
  • static void dfs(int idx) {
  • if (idx == 9) {
  • a = new StringBuilder("");
  • b = new StringBuilder("");
  • c = new StringBuilder("");
  • if (check())
  • set.add(a.toString());
  • return;
  • }
  • for (int i = 1; i <= 9; i++) {
  • if (book[i - 1] == 0) {
  • book[i - 1] = 1;
  • res[idx] = i;
  • dfs(idx + 1);
  • book[i - 1] = 0;
  • }
  • }
  • }
  • private static boolean check() {
  • a.append(res[0]).append(res[1]).append(res[2]);
  • b.append(res[3]).append(res[4]).append(res[5]);
  • c.append(res[6]).append(res[7]).append(res[8]);
  • int numa = Integer.parseInt(a.toString());
  • int numb = Integer.parseInt(b.toString());
  • int numc = Integer.parseInt(c.toString());
  • return (numb == numa << 1) && (numc == numa * 3);
  • }
  • }
Archives Tip
QR Code for this page
Tipping QR Code