当前位置:编程学习 > JAVA >>

面试题求解!!!!!!!!!!!!

用1到9组成3个三位数(每个数字只能用一次),使其中两个数的和等于第三个数


要求数组方法,输出所有满足条件的等式(如124 + 659 = 783
125 + 739 = 864) --------------------编程问答-------------------- 不会 帮顶。。 --------------------编程问答-------------------- 两种方法,
第一种,三层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};
}
}
--------------------编程问答-------------------- 我觉得这个是个求排列的问题。假设有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
仅供参考。
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,