用1到9组成3个三位数(每个数字只能用一次),使其中两个数的和等于第三个数
要求数组方法,输出所有满足条件的等式(如124 + 659 = 783
125 + 739 = 864)

解决方案 »

  1.   

    两种方法,
    第一种,三层for循环,这种方法是最简单的,但是即使答出来,也只能给60分。
    第二种,递归获取所有的组合,然后对这个组合进行遍历,找出符合条件的,这个估计能给90分。
    时间限制,先写一个第一种吧。谁有兴趣可以试试第二种package com.lxl;import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;public class Test4 {
    public static void main(String[] args) {
    for(int i1=100;i1<999;i1++){
    for(int i2=100;i2<999;i2++){
    for(int i3=100;i3<999;i3++){
    if(haveTrue(i1, i2, i3)){
    if((i1+i2)==i3){
    System.out.println(i1+"+"+i2+"="+i3);
    }
    }
    }
    }
    }

    }
    public static boolean haveTrue(int a,int b,int c){
    int[] i=new int[]{1,2,3,4,5,6,7,8,9};

    if(a<100||b<100||c<100){
    return false;
    }
    //检验是否没有重复数字
    for(int k:getNum(a)){
    if(k>0){
    i[k-1]=0;
    }
    }
    for(int k:getNum(b)){
    if(k>0){
    i[k-1]=0;
    }
    }
    for(int k:getNum(c)){
    if(k>0){
    i[k-1]=0;
    }
    }
    for(int p:i){
    if(p!=0)return false;
    }

    return true;
    }
    public static int[] getNum(int num){
    int num100=num/100;
    int num10=(num-100*num100)/10;
    int num1=num-100*num100-num10*10;
    return new int[]{num100,num10,num1};
    }
    }
      

  2.   

    我觉得这个是个求排列的问题。假设有1~9的全排列,记录下满足前3位加中间三位等于后三位即可。
    public class NineNumber { /**
     * @param args
     */
    public static void main(String[] args) {
    String test = "123456789";
    char[] chars = test.toCharArray();
    allSort(chars, 0, chars.length - 1);
    } private static StringBuilder TEMP = new StringBuilder(); public static void allSort(char[] buf, int start, int end) {
    if (start == end) {
    for (int i = 0; i <= end; i++) {
    TEMP.append(buf[i]);
    }
    numberChecker();
    } else {
    for (int i = start; i <= end; i++) {
    char temp = buf[start];
    buf[start] = buf[i];
    buf[i] = temp; allSort(buf, start + 1, end); temp = buf[start];
    buf[start] = buf[i];
    buf[i] = temp;
    }
    }
    } private static void numberChecker() {
    Integer sum1 = Integer.parseInt(TEMP.substring(0, 3));
    Integer sum2 = Integer.parseInt(TEMP.substring(3, 6));
    Integer sum3 = Integer.parseInt(TEMP.substring(6, 9));
    if((sum1+sum2) == sum3){
    System.out.println(sum1 + " + " + sum2 + " = " + sum3);
    }
    TEMP.replace(0, TEMP.length(), "");
    }
    }结果如下:
    124 + 659 = 783
    125 + 739 = 864
    127 + 359 = 486
    127 + 368 = 495
    128 + 439 = 567
    128 + 367 = 495
    129 + 438 = 567
    129 + 654 = 783
    129 + 735 = 864
    129 + 357 = 486
    134 + 658 = 792
    135 + 729 = 864
    138 + 429 = 567
    138 + 654 = 792
    139 + 428 = 567
    139 + 725 = 864
    143 + 586 = 729
    142 + 596 = 738
    142 + 695 = 837
    145 + 692 = 837
    146 + 583 = 729
    146 + 592 = 738
    154 + 629 = 783
    154 + 638 = 792
    154 + 782 = 936
    152 + 487 = 639
    152 + 784 = 936
    157 + 482 = 639
    157 + 329 = 486
    158 + 634 = 792
    159 + 624 = 783
    159 + 327 = 486
    163 + 782 = 945
    162 + 387 = 549
    162 + 783 = 945
    167 + 328 = 495
    167 + 382 = 549
    168 + 327 = 495
    173 + 286 = 459
    173 + 295 = 468
    175 + 293 = 468
    176 + 283 = 459
    183 + 492 = 675
    183 + 546 = 729
    183 + 762 = 945
    183 + 276 = 459
    184 + 392 = 576
    184 + 752 = 936
    186 + 543 = 729
    186 + 273 = 459
    187 + 452 = 639
    187 + 362 = 549
    182 + 457 = 639
    182 + 493 = 675
    182 + 754 = 936
    182 + 763 = 945
    182 + 367 = 549
    182 + 394 = 576
    193 + 482 = 675
    193 + 275 = 468
    194 + 382 = 576
    195 + 642 = 837
    195 + 273 = 468
    196 + 542 = 738
    192 + 483 = 675
    192 + 546 = 738
    192 + 645 = 837
    192 + 384 = 576
    214 + 569 = 783
    214 + 659 = 873
    215 + 478 = 693
    215 + 748 = 963
    216 + 378 = 594
    216 + 738 = 954
    218 + 475 = 693
    218 + 439 = 657
    218 + 745 = 963
    218 + 736 = 954
    218 + 376 = 594
    218 + 349 = 567
    219 + 438 = 657
    219 + 564 = 783
    219 + 654 = 873
    219 + 348 = 567
    234 + 657 = 891
    235 + 746 = 981
    236 + 718 = 954
    236 + 745 = 981
    237 + 654 = 891
    238 + 419 = 657
    238 + 716 = 954
    239 + 418 = 657
    243 + 576 = 819
    243 + 675 = 918
    241 + 596 = 837
    245 + 673 = 918
    245 + 736 = 981
    245 + 718 = 963
    246 + 573 = 819
    246 + 591 = 837
    246 + 735 = 981
    248 + 715 = 963
    248 + 319 = 567
    249 + 318 = 567
    254 + 619 = 873
    254 + 637 = 891
    251 + 397 = 648
    257 + 634 = 891
    257 + 391 = 648
    259 + 614 = 873
    264 + 519 = 783
    269 + 514 = 783
    273 + 546 = 819
    273 + 591 = 864
    273 + 645 = 918
    273 + 681 = 954
    273 + 186 = 459
    273 + 195 = 468
    275 + 418 = 693
    275 + 643 = 918
    275 + 193 = 468
    276 + 543 = 819
    276 + 318 = 594
    276 + 183 = 459
    271 + 593 = 864
    271 + 683 = 954
    278 + 415 = 693
    278 + 316 = 594
    283 + 671 = 954
    283 + 176 = 459
    284 + 391 = 675
    286 + 173 = 459
    281 + 673 = 954
    281 + 394 = 675
    293 + 571 = 864
    293 + 175 = 468
    294 + 381 = 675
    295 + 173 = 468
    296 + 541 = 837
    297 + 351 = 648
    291 + 546 = 837
    291 + 573 = 864
    291 + 357 = 648
    291 + 384 = 675
    324 + 567 = 891
    324 + 657 = 981
    327 + 564 = 891
    327 + 519 = 846
    327 + 654 = 981
    327 + 618 = 945
    327 + 159 = 486
    327 + 168 = 495
    328 + 617 = 945
    328 + 167 = 495
    329 + 517 = 846
    329 + 157 = 486
    314 + 658 = 972
    316 + 278 = 594
    317 + 529 = 846
    317 + 628 = 945
    318 + 654 = 972
    318 + 627 = 945
    318 + 276 = 594
    318 + 249 = 567
    319 + 527 = 846
    319 + 248 = 567
    341 + 586 = 927
    342 + 576 = 918
    346 + 572 = 918
    346 + 581 = 927
    348 + 219 = 567
    349 + 218 = 567
    351 + 297 = 648
    354 + 627 = 981
    354 + 618 = 972
    352 + 467 = 819
    357 + 462 = 819
    357 + 291 = 648
    357 + 624 = 981
    357 + 129 = 486
    358 + 614 = 972
    359 + 127 = 486
    364 + 527 = 891
    362 + 457 = 819
    362 + 187 = 549
    367 + 452 = 819
    367 + 524 = 891
    367 + 128 = 495
    367 + 182 = 549
    368 + 127 = 495
    376 + 542 = 918
    376 + 218 = 594
    372 + 546 = 918
    378 + 216 = 594
    381 + 546 = 927
    381 + 294 = 675
    384 + 192 = 576
    384 + 291 = 675
    386 + 541 = 927
    387 + 162 = 549
    382 + 167 = 549
    382 + 194 = 576
    391 + 257 = 648
    391 + 284 = 675
    394 + 182 = 576
    394 + 281 = 675
    397 + 251 = 648
    392 + 184 = 576
    428 + 139 = 567
    429 + 138 = 567
    438 + 129 = 567
    438 + 219 = 657
    439 + 128 = 567
    439 + 218 = 657
    415 + 278 = 693
    418 + 275 = 693
    418 + 239 = 657
    419 + 238 = 657
    452 + 187 = 639
    452 + 367 = 819
    457 + 182 = 639
    457 + 362 = 819
    462 + 357 = 819
    467 + 352 = 819
    475 + 218 = 693
    478 + 215 = 693
    483 + 192 = 675
    487 + 152 = 639
    482 + 157 = 639
    482 + 193 = 675
    493 + 182 = 675
    492 + 183 = 675
    524 + 367 = 891
    527 + 319 = 846
    527 + 364 = 891
    529 + 317 = 846
    543 + 276 = 819
    543 + 186 = 729
    542 + 376 = 918
    542 + 196 = 738
    541 + 296 = 837
    541 + 386 = 927
    546 + 273 = 819
    546 + 291 = 837
    546 + 183 = 729
    546 + 192 = 738
    546 + 372 = 918
    546 + 381 = 927
    514 + 269 = 783
    517 + 329 = 846
    519 + 264 = 783
    519 + 327 = 846
    564 + 327 = 891
    564 + 219 = 783
    567 + 324 = 891
    569 + 214 = 783
    573 + 246 = 819
    573 + 291 = 864
    571 + 293 = 864
    576 + 342 = 918
    576 + 243 = 819
    572 + 346 = 918
    583 + 146 = 729
    581 + 346 = 927
    586 + 143 = 729
    586 + 341 = 927
    593 + 271 = 864
    591 + 273 = 864
    591 + 246 = 837
    596 + 142 = 738
    596 + 241 = 837
    592 + 146 = 738
    624 + 357 = 981
    624 + 159 = 783
    627 + 354 = 981
    627 + 318 = 945
    628 + 317 = 945
    629 + 154 = 783
    634 + 257 = 891
    634 + 158 = 792
    637 + 254 = 891
    638 + 154 = 792
    643 + 275 = 918
    642 + 195 = 837
    645 + 273 = 918
    645 + 192 = 837
    654 + 327 = 981
    654 + 318 = 972
    654 + 237 = 891
    654 + 219 = 873
    654 + 129 = 783
    654 + 138 = 792
    657 + 234 = 891
    657 + 324 = 981
    658 + 134 = 792
    658 + 314 = 972
    659 + 214 = 873
    659 + 124 = 783
    614 + 358 = 972
    614 + 259 = 873
    617 + 328 = 945
    618 + 354 = 972
    618 + 327 = 945
    619 + 254 = 873
    673 + 245 = 918
    673 + 281 = 954
    675 + 243 = 918
    671 + 283 = 954
    683 + 271 = 954
    681 + 273 = 954
    695 + 142 = 837
    692 + 145 = 837
    725 + 139 = 864
    729 + 135 = 864
    735 + 246 = 981
    735 + 129 = 864
    736 + 245 = 981
    736 + 218 = 954
    738 + 216 = 954
    739 + 125 = 864
    745 + 236 = 981
    745 + 218 = 963
    746 + 235 = 981
    748 + 215 = 963
    754 + 182 = 936
    752 + 184 = 936
    763 + 182 = 945
    762 + 183 = 945
    715 + 248 = 963
    716 + 238 = 954
    718 + 245 = 963
    718 + 236 = 954
    783 + 162 = 945
    784 + 152 = 936
    782 + 154 = 936
    782 + 163 = 945当然也有很多优化的余地,比如起始的组合要大于 123+456=576 -->123456576
    仅供参考。