将0~9共10个数字填入下面的表达式,使得该表达式成立。找出所有可能的情况。 【 】【 】【 】 + 【 】【 】【 】 = 【 】【 】【 】【 】 public class MainTest { public static void main(String[] args) { showAllResult(10); } private static void showAllResult(int num) { int[] nums = new int[num]; findAll(0, num-1, nums); } /** * 用递归的方法找到所有n个数字的组合 * @param level - 当前正在考察组合中的第几位数字,从0开始算 * @param max_level - 该组合中元素的数目,从0开始算 * @param nums - 用于存放生成的组合 */ private static void findAll(int level, int max_level, int nums[]) { if(level>max_level) return; boolean[] avai_flag = new boolean[max_level+2]; Arrays.fill(avai_flag, true); for(int i=0; i<level; i++) { avai_flag[nums[i]] = false; } for(int i=1; i<=max_level+1; i++) { if(avai_flag[i]==true) { nums[level]=i; findAll(level+1, max_level, nums); }else{ continue; } if(level == max_level) showResult(nums); } } /** * 针对一个组合,检查它是否满足条件,若满足则打印显示 * @param nums - 一个由1~10组成的共10个数字的组合 */ private static void showResult(int[] nums) { int[] a = new int[nums.length]; for(int i=0; i<a.length; i++) a[i] = nums[i] - 1; int m, n, result; m = Integer.parseInt(""+a[0]+a[1]+a[2]); n = Integer.parseInt(""+a[3]+a[4]+a[5]); result = Integer.parseInt(""+a[6]+a[7]+a[8]+a[9]); if(m+n==result) System.out.println(String.format("%1$d + %2$d = %3$04d", m, n, result)); } } 结果为: 124 + 659 = 0783 125 + 739 = 0864 127 + 359 = 0486 127 + 368 = 0495 128 + 367 = 0495 128 + 439 = 0567 129 + 357 = 0486 129 + 438 = 0567 129 + 654 = 0783 129 + 735 = 0864 134 + 658 = 0792 135 + 729 = 0864 138 + 429 = 0567 138 + 654 = 0792 139 + 428 = 0567 139 + 725 = 0864 142 + 596 = 0738 142 + 695 = 0837 143 + 586 = 0729 145 + 692 = 0837 146 + 583 = 0729 146 + 592 = 0738 152 + 487 = 0639 152 + 784 = 0936 154 + 629 = 0783 154 + 638 = 0792 154 + 782 = 0936 157 + 329 = 0486 157 + 482 = 0639 158 + 634 = 0792 159 + 327 = 0486 159 + 624 = 0783 162 + 387 = 0549 162 + 783 = 0945 163 + 782 = 0945 167 + 328 = 0495 167 + 382 = 0549 168 + 327 = 0495 173 + 286 = 0459 173 + 295 = 0468 175 + 293 = 0468 176 + 283 = 0459 182 + 367 = 0549 182 + 394 = 0576 182 + 457 = 0639 182 + 493 = 0675 182 + 754 = 0936 182 + 763 = 0945 183 + 276 = 0459 183 + 492 = 0675 183 + 546 = 0729 183 + 762 = 0945 184 + 392 = 0576 184 + 752 = 0936 186 + 273 = 0459 186 + 543 = 0729 187 + 362 = 0549 187 + 452 = 0639 192 + 384 = 0576 192 + 483 = 0675 192 + 546 = 0738 192 + 645 = 0837 193 + 275 = 0468 193 + 482 = 0675 194 + 382 = 0576 195 + 273 = 0468 195 + 642 = 0837 196 + 542 = 0738 214 + 569 = 0783 214 + 659 = 0873 215 + 478 = 0693 215 + 748 = 0963 216 + 378 = 0594 216 + 738 = 0954 218 + 349 = 0567 218 + 376 = 0594 218 + 439 = 0657 218 + 475 = 0693 218 + 736 = 0954 218 + 745 = 0963 219 + 348 = 0567 219 + 438 = 0657 219 + 564 = 0783 219 + 654 = 0873 234 + 657 = 0891 235 + 746 = 0981 236 + 718 = 0954 236 + 745 = 0981 237 + 654 = 0891 238 + 419 = 0657 238 + 716 = 0954 239 + 418 = 0657 241 + 596 = 0837 243 + 576 = 0819 243 + 675 = 0918 245 + 673 = 0918 245 + 718 = 0963 245 + 736 = 0981 246 + 573 = 0819 246 + 591 = 0837 246 + 735 = 0981 246 + 789 = 1035 248 + 319 = 0567 248 + 715 = 0963 249 + 318 = 0567 249 + 786 = 1035 251 + 397 = 0648 254 + 619 = 0873 254 + 637 = 0891 257 + 391 = 0648 257 + 634 = 0891 259 + 614 = 0873 264 + 519 = 0783 264 + 789 = 1053 269 + 514 = 0783 269 + 784 = 1053 271 + 593 = 0864 271 + 683 = 0954 273 + 186 = 0459 273 + 195 = 0468 273 + 546 = 0819 273 + 591 = 0864 273 + 645 = 0918 273 + 681 = 0954 275 + 193 = 0468 275 + 418 = 0693 275 + 643 = 0918 276 + 183 = 0459 276 + 318 = 0594 276 + 543 = 0819 278 + 316 = 0594 278 + 415 = 0693 281 + 394 = 0675 281 + 673 = 0954 283 + 176 = 0459 283 + 671 = 0954 284 + 391 = 0675 284 + 769 = 1053 286 + 173 = 0459 286 + 749 = 1035 289 + 746 = 1035 289 + 764 = 1053 291 + 357 = 0648 291 + 384 = 0675 291 + 546 = 0837 291 + 573 = 0864 293 + 175 = 0468 293 + 571 = 0864 294 + 381 = 0675 295 + 173 = 0468 296 + 541 = 0837 297 + 351 = 0648 314 + 658 = 0972 316 + 278 = 0594 317 + 529 = 0846 317 + 628 = 0945 318 + 249 = 0567 318 + 276 = 0594 318 + 627 = 0945 318 + 654 = 0972 319 + 248 = 0567 319 + 527 = 0846 324 + 567 = 0891 324 + 657 = 0981 324 + 765 = 1089 325 + 764 = 1089 327 + 159 = 0486 327 + 168 = 0495 327 + 519 = 0846 327 + 564 = 0891 327 + 618 = 0945 327 + 654 = 0981 328 + 167 = 0495 328 + 617 = 0945 329 + 157 = 0486 329 + 517 = 0846 341 + 586 = 0927 342 + 576 = 0918 342 + 756 = 1098 346 + 572 = 0918 346 + 581 = 0927 346 + 752 = 1098 347 + 859 = 1206 348 + 219 = 0567 349 + 218 = 0567 349 + 857 = 1206 351 + 297 = 0648 352 + 467 = 0819 352 + 746 = 1098 354 + 618 = 0972 354 + 627 = 0981 356 + 742 = 1098 357 + 129 = 0486 357 + 291 = 0648 357 + 462 = 0819 357 + 624 = 0981 357 + 849 = 1206 358 + 614 = 0972 359 + 127 = 0486 359 + 847 = 1206 362 + 187 = 0549 362 + 457 = 0819 364 + 527 = 0891 364 + 725 = 1089 365 + 724 = 1089 367 + 128 = 0495 367 + 182 = 0549 367 + 452 = 0819 367 + 524 = 0891 368 + 127 = 0495 372 + 546 = 0918 376 + 218 = 0594 376 + 542 = 0918 378 + 216 = 0594 381 + 294 = 0675 381 + 546 = 0927 382 + 167 = 0549 382 + 194 = 0576 384 + 192 = 0576 384 + 291 = 0675 386 + 541 = 0927 387 + 162 = 0549 391 + 257 = 0648 391 + 284 = 0675 392 + 184 = 0576 394 + 182 = 0576 394 + 281 = 0675 397 + 251 = 0648 415 + 278 = 0693 418 + 239 = 0657 418 + 275 = 0693 419 + 238 = 0657 423 + 675 = 1098 425 + 673 = 1098 426 + 879 = 1305 428 + 139 = 0567 429 + 138 = 0567 429 + 876 = 1305 432 + 657 = 1089 437 + 589 = 1026 437 + 652 = 1089 438 + 129 = 0567 438 + 219 = 0657 439 + 128 = 0567 439 + 218 = 0657 439 + 587 = 1026 452 + 187 = 0639 452 + 367 = 0819 452 + 637 = 1089 457 + 182 = 0639 457 + 362 = 0819 457 + 632 = 1089 462 + 357 = 0819 467 + 352 = 0819 473 + 589 = 1062 473 + 625 = 1098 475 + 218 = 0693 475 + 623 = 1098 476 + 829 = 1305 478 + 215 = 0693 479 + 583 = 1062 479 + 826 = 1305 482 + 157 = 0639 482 + 193 = 0675 483 + 192 = 0675 483 + 579 = 1062 487 + 152 = 0639 487 + 539 = 1026 489 + 537 = 1026 489 + 573 = 1062 492 + 183 = 0675 493 + 182 = 0675 514 + 269 = 0783 517 + 329 = 0846 519 + 264 = 0783 519 + 327 = 0846 524 + 367 = 0891 527 + 319 = 0846 527 + 364 = 0891 529 + 317 = 0846 537 + 489 = 1026 539 + 487 = 1026 541 + 296 = 0837 541 + 386 = 0927 542 + 196 = 0738 542 + 376 = 0918 543 + 186 = 0729 543 + 276 = 0819 546 + 183 = 0729 546 + 192 = 0738 546 + 273 = 0819 546 + 291 = 0837 546 + 372 = 0918 546 + 381 = 0927 564 + 219 = 0783 564 + 327 = 0891 567 + 324 = 0891 569 + 214 = 0783 571 + 293 = 0864 572 + 346 = 0918 573 + 246 = 0819 573 + 291 = 0864 573 + 489 = 1062 576 + 243 = 0819 576 + 342 = 0918 579 + 483 = 1062 581 + 346 = 0927 583 + 146 = 0729 583 + 479 = 1062 586 + 143 = 0729 586 + 341 = 0927 587 + 439 = 1026 589 + 437 = 1026 589 + 473 = 1062 591 + 246 = 0837 591 + 273 = 0864 592 + 146 = 0738 593 + 271 = 0864 596 + 142 = 0738 596 + 241 = 0837 614 + 259 = 0873 614 + 358 = 0972 617 + 328 = 0945 618 + 327 = 0945 618 + 354 = 0972 619 + 254 = 0873 623 + 475 = 1098 624 + 159 = 0783 624 + 357 = 0981 624 + 879 = 1503 625 + 473 = 1098 627 + 318 = 0945 627 + 354 = 0981 628 + 317 = 0945 629 + 154 = 0783 629 + 874 = 1503 632 + 457 = 1089 634 + 158 = 0792 634 + 257 = 0891 637 + 254 = 0891 637 + 452 = 1089 638 + 154 = 0792 642 + 195 = 0837 643 + 275 = 0918 645 + 192 = 0837 645 + 273 = 0918 652 + 437 = 1089 654 + 129 = 0783 654 + 138 = 0792 654 + 219 = 0873 654 + 237 = 0891 654 + 318 = 0972 654 + 327 = 0981 657 + 234 = 0891 657 + 324 = 0981 657 + 432 = 1089 658 + 134 = 0792 658 + 314 = 0972 659 + 124 = 0783 659 + 214 = 0873 671 + 283 = 0954 673 + 245 = 0918 673 + 281 = 0954 673 + 425 = 1098 674 + 829 = 1503 675 + 243 = 0918 675 + 423 = 1098 679 + 824 = 1503 681 + 273 = 0954 683 + 271 = 0954 692 + 145 = 0837 695 + 142 = 0837 715 + 248 = 0963 716 + 238 = 0954 718 + 236 = 0954 718 + 245 = 0963 724 + 365 = 1089 725 + 139 = 0864 725 + 364 = 1089 729 + 135 = 0864 735 + 129 = 0864 735 + 246 = 0981 736 + 218 = 0954 736 + 245 = 0981 738 + 216 = 0954 739 + 125 = 0864 742 + 356 = 1098 743 + 859 = 1602 745 + 218 = 0963 745 + 236 = 0981 746 + 235 = 0981 746 + 289 = 1035 746 + 352 = 1098 748 + 215 = 0963 749 + 286 = 1035 749 + 853 = 1602 752 + 184 = 0936 752 + 346 = 1098 753 + 849 = 1602 754 + 182 = 0936 756 + 342 = 1098 759 + 843 = 1602 762 + 183 = 0945 763 + 182 = 0945 764 + 289 = 1053 764 + 325 = 1089 765 + 324 = 1089 769 + 284 = 1053 782 + 154 = 0936 782 + 163 = 0945 783 + 162 = 0945 784 + 152 = 0936 784 + 269 = 1053 786 + 249 = 1035 789 + 246 = 1035 789 + 264 = 1053 824 + 679 = 1503 826 + 479 = 1305 829 + 476 = 1305 829 + 674 = 1503 843 + 759 = 1602 847 + 359 = 1206 849 + 357 = 1206 849 + 753 = 1602 853 + 749 = 1602 857 + 349 = 1206 859 + 347 = 1206 859 + 743 = 1602 874 + 629 = 1503 876 + 429 = 1305 879 + 426 = 1305 879 + 624 = 1503