看这个算式:☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字。这个算式有多少种可能的正确填写方法?

/**
 * 看这个算式:
 
    ☆☆☆ + ☆☆☆ = ☆☆☆

    如果每个五角星代表 1 ~ 9 的不同的数字。

    这个算式有多少种可能的正确填写方法?

    173 + 286 = 459
    295 + 173 = 468
    173 + 295 = 468
    183 + 492 = 675

    以上都是正确的填写法!

    注意:
    111 + 222 = 333 是错误的填写法!
    因为每个数字必须是不同的! 
    也就是说:1~9中的所有数字,每个必须出现且仅出现一次!

    注意:
    不包括数字“0”!

    注意:
    满足加法交换率的式子算两种不同的答案。
    所以答案肯定是个偶数!

    注意:
    只要求计算不同的填法的数目
    不要求列出所有填写法
    更不要求填写源代码!

    答案不要写在这里,请写在“解答.txt”中!
 * @author wangmeng
 *
 */
public class 填算式 {
	static int sum = 0;

	public static void main(String[] args) {
		String s = "123456789";
		char[] c = s.toCharArray();
		createStr(c, 0, c.length - 1);
		System.out.println(sum);
	}

	private static void createStr(char[] c, int low, int high) {
		if (low == high) {
			check(c);
			
		} else {
			for (int i = low; i <=high; i++) {
				char temp = c[low];
				c[low] = c[i];
				c[i] = temp;

				createStr(c, low + 1, high);

				temp = c[low];
				c[low] = c[i];
				c[i] = temp;

			}
		}

	}

	private static void check(char[] c) {
		
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < c.length; i++) {
			sb.append(c[i]);

		}
		
		int a = Integer.parseInt(sb.toString().substring(0, 3));
		int b = Integer.parseInt(sb.toString().substring(3, 6));
		int d = Integer.parseInt(sb.toString().substring(6));
		if (a + b == d) {
			sum++;
			
		}

	}
}

第二种方法:全排列
import java.util.ArrayList;
import java.util.List;

/**
 * 看这个算式:
 
    ☆☆☆ + ☆☆☆ = ☆☆☆

    如果每个五角星代表 1 ~ 9 的不同的数字。

    这个算式有多少种可能的正确填写方法?

    173 + 286 = 459
    295 + 173 = 468
    173 + 295 = 468
    183 + 492 = 675

    以上都是正确的填写法!

    注意:
    111 + 222 = 333 是错误的填写法!
    因为每个数字必须是不同的! 
    也就是说:1~9中的所有数字,每个必须出现且仅出现一次!

    注意:
    不包括数字“0”!

    注意:
    满足加法交换率的式子算两种不同的答案。
    所以答案肯定是个偶数!

    注意:
    只要求计算不同的填法的数目
    不要求列出所有填写法
    更不要求填写源代码!

    答案不要写在这里,请写在“解答.txt”中!
 * @author wangmeng
 *
 */
public class 填算式2 {
	static int sum = 0;

	public static void main(String[] args) {
		List
  
  
   
    list = new ArrayList
   
   
    
    ();
		for(int i = 0;i<9;i++){
			list.add(0);//进行初始化
		}
		
		createStr(list,9);
		System.out.println(sum);
		
	}

	

	private static void createStr(List
    
    
     
      list, int n) {
		if(n<=0){
			check(list);
			//return ;
		}
		for(int i = 1;i<=list.size();i++){
			if(!list.contains(i)){
				list.set(list.size()-n, i);
			}else{
				continue;
			}
			createStr(list,n-1);
			list.set(list.size()-n, 0);
		}
	}



	private static void check(List
     
     
      
       list) {
		StringBuffer sb = new StringBuffer();
		for(int i = 0;i<list.size();i++){
			sb.append(list.get(i)+"");
		}
	    int a = Integer.parseInt(sb.toString().substring(0,3));
	    int b = Integer.parseInt(sb.toString().substring(3,6));
	    int c = Integer.parseInt(sb.toString().substring(6));
	    if(a+b==c){
	    	System.out.println(a + " + " + b + " = " + c);
	    	sum++;
	    }

	}
}

运行结果:
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
336


     
     
    
    
   
   
  
  

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值