题目描述
现在小学的数学题目也不是那么好玩的。看看这个寒假作业:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
每个方块代表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
就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?
解决方法
public class A_6 {
public static int num = 0;
public static void f(int[] a,int startIndex){
if (startIndex>3&&a[0]+a[1]!=a[2]) {
return;
}
if (startIndex>6&&a[3]-a[4]!=a[5]){
return;
}
if (startIndex>9&&a[6]*a[7]!=a[8]){
return;
}
if (startIndex==a.length-1&&a[11]*a[10]==a[9]){//java中 / 除法是整数除法
printArr(a);
num++;
return;
}
for (int i = startIndex; i < a.length; i++) {
{int t = a[startIndex];a[startIndex] = a[i];a[i] = t;}
f(a,startIndex+1);
{int t = a[startIndex];a[startIndex] = a[i];a[i] = t;}
}
}
private static void printArr(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7,8,9,10,11,12,13};
f(a,0);
System.out.println(num);
}
}