int count = 0;
for (int a = 1; a < 10; a++) {
for (int b = 1; b < 10; b++) {
for (int c = 1; c < 10; c++) {
for (int d = 1; d < 10; d++) {
for (int e = 1; e < 10; e++) {
for (int f = 1; f < 10; f++) {
for (int g = 1; g < 10; g++) {
for (int h = 1; h < 10; h++) {
for (int i = 1; i < 10; i++) {
Set<Integer> set = new HashSet<>();
set.add(a);
set.add(b);
set.add(c);
set.add(d);
set.add(e);
set.add(f);
set.add(g);
set.add(h);
set.add(i);
if (set.size() == 9
&& Integer.parseInt((a + "" + b + c)) + Integer.parseInt((d + "" + e + f)) == Integer.parseInt((g + "" + h + i))) {
System.out.println((a + "" + b + c) + " + " + (d + "" + e + f) + " = " + (g + "" + h + i));
count += 1;
}
}
}
}
}
}
}
}
}
}
先这样将就一下吧,后面看看有什么优雅的方案;别用这个,不好
可以看下这个
public static void main(String[] args) {
int count = 0;
for (int a = 111; a < 999; a++){
for (int b = 111; b < 999; b++){
String str = a + "" + b;
String strSum = a + b + "";
str = str + strSum;
int size = getSize(str);
if (size == 9 && strSum.length() == 3 && a + b == Integer.parseInt(strSum)){
System.out.println(a + " + " + b + " = " + strSum);
count ++;
}
}
}
System.out.println("一共有 " + count + " 种可能");
}
public static int getSize(String str){
Set<String> set = new HashSet<>();
for (int a = 0; a < str.length(); a++){
set.add(str.substring(a, a + 1));
}
set.remove("0");
return set.size();
}
public static void main(String[] args) { for (int j = 0; j < 10000; j++) { ArrayList<Integer> integers = new ArrayList<>(); for (int i = 1; i <= 9; i++) { integers.add(i); } int a = 0, b = 0, c = 0; for (int i = 0; i < 3; i++) { a = getA(integers, a, i); b = getA(integers, b, i); c = getA(integers, c, i); } if (a+b ==c){ System.out.println(a +" + "+b+" = "+c); System.out.println("------------------"); } } } private static int getA(ArrayList<Integer> integers, int a, int i) { Random random = new Random(); int n = random.nextInt(integers.size()); Integer integer = integers.get(n); integers.remove(integer); a += (integer * Math.pow(10, i)); return a; }
public class ElevenTest {
public static void main(String[] args) {
List<Integer> list = null;
for (int i = 123; i <= 543; i++) {
for (int j = 456; j <= 876 ; j++) {
list = new ArrayList<>();
if(j == i){
continue;
}
int sum = i + j;
if(sum >= 999){
break;
}
if(String.valueOf(i).contains("0") ||
String.valueOf(j).contains("0") ||
String.valueOf(sum).contains("0")
){
continue;
}
getNum(i,list);
getNum(j,list);
getNum(sum,list);
if(list.contains(0)){
continue;
}
if(list.size() == 9){
System.out.println(i + " + " + j + " = " + sum);
break;
}
}
}
}
public static void getNum(Integer num,List<Integer> list){
addNum(num % 10,list);
addNum(num /10 % 10,list);
addNum(num / 100,list);
}
public static void addNum(Integer num,List<Integer> list){
if(!list.contains(num)){
list.add(num);
}
}
}
124 + 659 = 783
125 + 739 = 864
129 + 654 = 783
134 + 658 = 792
135 + 729 = 864
138 + 654 = 792
139 + 725 = 864
142 + 596 = 738
143 + 586 = 729
145 + 692 = 837
146 + 583 = 729
152 + 487 = 639
154 + 629 = 783
157 + 482 = 639
158 + 634 = 792
159 + 624 = 783
162 + 783 = 945
163 + 782 = 945
182 + 457 = 639
183 + 492 = 675
184 + 752 = 936
186 + 543 = 729
192 + 483 = 675
193 + 482 = 675
195 + 642 = 837
196 + 542 = 738
214 + 569 = 783
215 + 478 = 693
216 + 738 = 954
218 + 475 = 693
219 + 564 = 783
234 + 657 = 891
235 + 746 = 981
236 + 718 = 954
237 + 654 = 891
238 + 716 = 954
241 + 596 = 837
243 + 576 = 819
245 + 673 = 918
246 + 573 = 819
248 + 715 = 963
254 + 619 = 873
257 + 634 = 891
259 + 614 = 873
264 + 519 = 783
269 + 514 = 783
271 + 593 = 864
273 + 546 = 819
275 + 643 = 918
276 + 543 = 819
281 + 673 = 954
283 + 671 = 954
291 + 546 = 837
293 + 571 = 864
296 + 541 = 837
314 + 658 = 972
317 + 529 = 846
318 + 627 = 945
319 + 527 = 846
324 + 567 = 891
327 + 519 = 846
328 + 617 = 945
329 + 517 = 846
341 + 586 = 927
342 + 576 = 918
346 + 572 = 918
352 + 467 = 819
354 + 618 = 972
357 + 462 = 819
358 + 614 = 972
362 + 457 = 819
364 + 527 = 891
367 + 524 = 891
372 + 546 = 918
376 + 542 = 918
381 + 546 = 927
386 + 541 = 927
public static void main(String[] args) {
boolean ifok = false;
for(int a = 899; a >=100 ; a--) {
for(int b = 100; b <= 899 ; b++) {
Set setA = new HashSet<>();
addToSet(setA, a);
addToSet(setA, b);
if (setA.size() != 6 || setA.contains('0')) {
continue;
}
// 等于6的时候说明a 和 b 都不重复了,计算他们的和
int c = a + b;
if (c > 999) {
break;
}
addToSet(setA, c);
if (setA.size() != 9 || setA.contains('0')) {
continue;
}else {
System.out.println(a + " + " + b + " = " + (a+b));
ifok = true;
}
}
if (ifok) {
break;
}
}
}
public static void addToSet(Set setA, int value) {
String aStr = String.valueOf(value);//数字转为字符串
char[] aArray = aStr.toCharArray();//字符串转字符数组
for (char c : aArray) {//字符放入set中
setA.add(c);
}
}
784 + 152 = 936
public static void main(String[] args) {
//随机数
Random random = new Random();
while ( true ) {
//搞个1-9集合,用来组成3个三位数
List<Integer> num = new ArrayList();
num.add(1);
num.add(2);
num.add(3);
num.add(4);
num.add(5);
num.add(6);
num.add(7);
num.add(8);
num.add(9);
//整仨变量,组成三个三位数
String one = "";
String two = "";
String total = "";
while ( num.size() != 0 ) {
//分别组成三个三位数,每次删掉集合中对应随机数的下标值
int r = random.nextInt( num.size() );
one += num.get(r);
num.remove(r);
int rr = random.nextInt( num.size() );
two += num.get(rr);
num.remove(rr);
int rrr = random.nextInt( num.size() );
total += num.get(rrr);
num.remove(rrr);
}
//判断等式是否相等
if ( Integer.parseInt(one) + Integer.parseInt(two) == Integer.parseInt(total) ) {
System.out.println( one + "+" + two + "=" + total + "----------" + "等式成立,程序结束" );
break;
}
System.out.println( one + "+" + two + "=" + total + "----------" + "等式不成立" );
}
}
随便写了一个~