package dati;
import java.util.*;
看下面的算式:
□□ x □□ = □□ x □□□
它表示:两个两位数相乘等于一个两位数乘以一个三位数。
如果没有限定条件,这样的例子很多。
但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。 该算式中1至9的每个数字出现且只出现一次!
比如: 46 x 79 = 23 x 158 54 x 69 = 27 x 138 54 x 93 = 27 x 186 .....
请编程,输出所有可能的情况!
注意: 左边的两个乘数交换算同一方案,不要重复输出! 不同方案的输出顺序不重要
public class suanshi { static int[] shu={1,2,3,4,5,6,7,8,9}; static HashSet<String> set=new HashSet<String>(); public static void main(String args[]){ zhuan(0); } static void zhuan(int n){ if(n>=9){ if((shu[0]*10+shu[1])*(shu[2]*10+shu[3])==(shu[4]*10+shu[5])*(shu[6]*100+shu[7]*10+shu[8])){ if(set.add(""+shu[0]+shu[1])){ set.add(""+shu[2]+shu[3]); System.out.println(""+shu[0]+shu[1]+"*"+shu[2]+shu[3]+"="+shu[4]+shu[5]+"*"+shu[6]+shu[7]+shu[8]); } } } else{ for(int i=n;i<9;i++){ int temp=shu[n]; shu[n]=shu[i]; shu[i]=temp; zhuan(n+1); temp=shu[n]; shu[n]=shu[i]; shu[i]=temp; } } } }