/**
* @author Administrator
寒假作业
现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
(如果显示不出来,可以参见【图1.jpg】)
每个方块代表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 hanJiaZuoYe {
public static int total = 0;
public static void swap(int[] str, int i, int j)
{
int temp ;
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
public static void arrange (int[] str, int st, int len)
{
if (st == len - 1)
{
if((str[1]+str[0]==str[2])&&(str[3]-str[4]==str[5])&&(str[6]*str[7]==str[8])&&
(str[9]/str[10]==str[11])&&(str[9]%str[10]==0)){
for (int i = 0; i < len; i ++)
{
System.out.print(str[i]+ " ");
}
System.out.println();
total++;
}
}
else
{
for (int i = st; i < len; i ++)
{
swap(str, st, i);
arrange(str, st + 1, len);
swap(str, st, i);
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int str[] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
arrange(str, 0, str.length);
System.out.println(total);
}
}