看下面的算式:□□ x □□ = □□ x □□□它表示:两个两位数相乘等于一个两位数乘以一个三位数。如果没有限定条件,这样的例子很多。但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。该算式中1至9的每个数字出现且只出现一次!比如:46 x 79 = 23 x 15854 x 69 = 27 x 13854 x 93 = 27 x 186.....请编程,输出所有可能的情况!注意:左边的两个乘数交换算同一方案,不要重复输出!不同方案的输出顺序不重要代码:
package BigTitle;
public class CaiSuanShi {
private static int count=0;
public static void main(String[] args) {
// TODO Auto-generated method stub
int list[]={1,2,3,4,5,6,7,8,9};
perm(list,0,8);
}
public static String perm(int list[],int k,int m)
{
int i;
int temp;
String str="";
if(k>m)
{
for(i=0;i<=m;i++)
{
str+=String.valueOf(list[i]);
if(str.length()==9)
{
deal(str);
// System.out.println(str);
}
}
count++;
}
else
{
for(i=k;i<=m;i++)
{
temp=list[k];
list[k]=list[i];
list[i]=temp;
perm(list,k+1,m);
temp=list[k];
list[k]=list[i];
list[i]=temp;
}
}
return str;
}
public static void deal(String s)
{
int arr[]=new int[4];
for(int i=0;i<3;i++)
{
arr[i]=Integer.valueOf(s.substring(i*2, 2*(i+1)));
}
arr[3]=Integer.valueOf(s.substring(6));
if(arr[0]*arr[1]==arr[2]*arr[3])
System.out.println(arr[0]+"X"+arr[1]+"="+arr[2]+"X"+arr[3]);
}
}