站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题如何用回溯法解题?

如何用回溯法解题?

摘要: 如何用回溯法解题?


利用回溯法思想将0---9之间的数字填入下式中,是等式成立
(无法画格子,我就用汉字代替了,其中一个框代表一个数字)
框1框2框3框4 = 框5框6框7 * 框7框8
请大家给出想法哦~~~~


怎么没有人帮我解答一下呢?


穷举啊?


但是题目要求用回溯法撒


7*8 ==4 ?看一下尾数就知道无解的了,楼主这样有意义么?


你要学习回溯法的话,比较经典的是八皇后问题,这个网上应该比较多,可以自己搜索一下


那用九个循环来做行不行?
如下: (有错误)
class Huisu
{
public static void main(String args[])
{
int a=0,b=0,c=0;
for(int a1=0;a1<10;a1++)
{
for(int a2=0;a2<10;a2++)
{
if(a2!=a1)
for(int a3=0;a3<10;a3++)
{
if(a3!=a2)
for(int a4=0;a4<10;a4++)
{
if(a4!=a3)
a=a1*1000+a2*100+a3*10+a4;
for(int b1=0;b1<10;b1++)
{
if(b1!=a1 && b1!=a2 &&b1!=a3&&b1!=a4)
for(int b2=0;b2<10;b2++)
{
if(b2!=b1)
for(int b3=0;b3<10;b3++)
{
if(b3!=b2)
b=b1*100+b2*10+b3;
for(int c1=0;c1<10;c1++)
{
if(c1!=b1 && c1!=b2)
for(int c2=0;c2<10;c2++)
{
if(c2!=c1)
c=c1*10+c2;
if(a==b*c )
System.out.println("等式为"+a+"="+b+"*"+c);
}
}
}
}
}
}
}
}
}
}
}


请大家看看我的程序


↑返回目录
前一篇: 调查:关于JAVA/J2EE设计模式的实际使用状况
后一篇: 关于提取TextField中的值为int的问题