輸入:第一個三位數的數字
輸出:滿足題目條件的所有三位數
下面展示:超級暴力的枚舉算法:
基本思路:
首先判斷一個數的每一位都不同,同時每一位不爲0,同時還要滿足 第 2 個三位數是第1個三位數的兩倍,第3個三位數是第1個的三倍
在判斷3個3位數每一位都不相同。全部採用IF語句,特別適合新手看。
然後在循環的時候,起始的數應該是123,結束的數應該是987
package 三位數;
public class 三位數 {
public static void main(String[] args) {
int a = 0; //三個三位數
int b = 0;
int c = 0;
for (int i = 123; i <= 987; i++) {
int[] a1 = { 0, 0, 0 };
for (int j = 123; j <= 987; j++) {
int[] b1 = { 0, 0, 0 };
for (int k = 123; k <= 987; k++) {
int[] c1 = { 0, 0, 0 };
a = i;
b = j;
c = k;
if (c == (3 * a) && b == (2 * a)) {
a1[0] = a / 100; //分別表示a、b、c的每一位
a1[1] = (a % 100) / 10;
a1[2] = a % 10;
b1[0] = b / 100;
b1[1] = (b % 100) / 10;
b1[2] = b % 10;
c1[0] = c / 100;
c1[1] = (c % 100) / 10;
c1[2] = c % 10;
if (a1[0] != a1[1] && a1[0] != a1[2] && a1[1] != a1[2]
&& b1[0] != b1[1] && b1[0] != b1[2]
&& b1[1] != b1[2] && c1[0] != c1[1]
&& c1[0] != c1[2] && c1[1] != c1[2]
&& a1[0] != 0 && a1[0] != 0 && a1[1] != 0
&& b1[0] != 0 && b1[0] != 0 && b1[1] != 0
&& c1[0] != 0 && c1[0] != 0 && c1[1] != 0) {
if (a1[0] != b1[0] && a1[0] != b1[1]
&& a1[0] != b1[2] && a1[1] != b1[0]
&& a1[1] != b1[1] && a1[1] != b1[2]
&& a1[2] != b1[0] && a1[2] != b1[1]
&& a1[2] != b1[2] && a1[0] != c1[0]
&& a1[0] != c1[1] && a1[0] != c1[2]
&& a1[1] != c1[0] && a1[1] != c1[1]
&& a1[1] != c1[2] && a1[2] != c1[0]
&& a1[2] != c1[1] && a1[2] != c1[2]
&& b1[0] != c1[0] && b1[0] != c1[1]
&& b1[0] != c1[2] && b1[1] != c1[0]
&& b1[1] != c1[1] && b1[1] != c1[2]
&& b1[2] != c1[0] && b1[2] != c1[1]
&& b1[2] != c1[2]) {
System.out.println(a + " " + b + " " + c);
}
}
}
}
}
}
}
}
/*
運行結果;
192 384 576
219 438 657
273 546 819
327 654 981
*/