日期:2014-05-20  浏览次数:20788 次

一个小学生的问题.
公式是

[]   []   []   []   *   []   =   []   []   []   []

这九个空,分别填入1~9   9个数字,要求不能重复.
简单的说就是一个前面是四位数,后面是四位数,用到1~9要求等式成立.
用java怎么实现?

------解决方案--------------------
答案是:
1738×4=6952
1963×4=7852

我算法没有优化,9重循环......
//BY wizim
//[] [] [] [] * [] = [] [] [] []
//↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
//i[1] i[2] i[3] i[4] i[0] i[5] i[6] i[7] i[8]


class Test
{
private static boolean chongfu(int[] z)
{
int i,j;
for(i=0;i <=z.length-1;i++)
{
for(j=i+1;j <=z.length-1;j++)
{
if(z[i]==z[j])
return true;
}
}
return false;
}
public static void main(String[] args)
{
int[] i=new int[9];
for(i[0]=1;i[0] <=9;i[0]++)
{
for(i[1]=1;i[1] <=9;i[1]++)
{
for(i[2]=1;i[2] <=9;i[2]++)
{
for(i[3]=1;i[3] <=9;i[3]++)
{
for(i[4]=1;i[4] <=9;i[4]++)
{
for(i[5]=1;i[5] <=9;i[5]++)
{
for(i[6]=1;i[6] <=9;i[6]++)
{
for(i[7]=1;i[7] <=9;i[7]++)
{
for(i[8]=1;i[8] <=9;i[8]++)
{
if((i[1]*1000+i[2]*100+i[3]*10+i[4])*i[0]==i[5]*1000+i[6]*100+i[7]*10+i[8])

if(!chongfu(i))
{
System.out.println(String.valueOf(i[1])+String.valueOf(i[2])+String.valueOf(i[3])+String.valueOf(i[4])+ "* "+String.valueOf(i[0])+ "= "+String.valueOf(i[5])+String.valueOf(i[6])+String.valueOf(i[7])+String.valueOf(i[8]));
}
}
}
}
}
}
}
}
}
}
}
}