[蓝桥杯2016初赛]寒假作业 java 暴力

本文介绍了一个有趣的小学数学题目,需要使用1到13的数字填充方格,并满足特定的等式条件,数字不可重复使用。通过编程的方式,利用多重循环来找出所有可能的解法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:

每个方块代表1~13中的某一个数字,但不能重复。
比如:
6 + 7 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
以及:
7 + 6 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?

我的dfs 就学了一点皮毛。
题解 一共12个变量{a,b,c,…}(一共可选13个值)
写12个for循环 一直continue 可节约大量不必要的循环。。

package step6;

import java.util.Scanner;

public class 寒假作业 {
	public static void main(String[] args) {
		int sum=0;
		Scanner sc = new Scanner(System.in);
		for(int a =1;a<=13;a++) {
			for(int b =1;b<=13;b++) {
				if(b==a) continue;
				for(int c =1;c<=13;c++) {
					if(a+b!=c) continue;
					if(c==b||c==a) continue;
					for(int d=1;d<=13;d++) {
						if(d==b||d==c||d==a) continue;
						for(int e =1;e<=13;e++) {
							if(e==d||e==c||e==b||e==a)continue;
							for(int f=1;f<=13;f++) {
								if(d-e!=f)continue; 
								if(f==e||f==d||f==c||f==b||f==a)continue;
								for(int g=1;g<=13;g++) {
									if(g==f||g==e||g==d||g==c||g==b||g==a)continue;
									for(int h =1;h<=13;h++) {
										if(h==g||h==f||h==e||h==d||h==c||h==b||h==a)continue;
										for(int i =1;i<=13;i++) {
											if(g*h!=i) continue;
											if(i==h||i==g||i==f||i==e||i==d||i==c||i==b||i==a)continue;
											for(int o =1;o<=13;o++) {
												if(o==i||o==h||o==g||o==f||o==e||o==d||o==c||o==b||o==a)continue;
												for(int p=1;p<=13;p++) {
													if(p==o||p==i||p==h||p==g||p==f||p==e||p==d||p==c||p==b||p==a)continue;
													for(int q=1;q<=13;q++) {
														if(q==p||q==o||q==i||q==h||q==g||q==f||q==e||q==d||q==c||q==b||q==a)continue;
														if(o==q*p) {
															sum++;
														}
													}	
												}	
											}	
										}	
									}
								}
							}
						}
					}
				}
			}
		}
		System.out.println(sum);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值