当前位置: 代码迷 >> Java相关 >> [分享]数独的JAVA解法
  详细解决方案

[分享]数独的JAVA解法

热度:187   发布时间:2007-09-27 00:20:10.0
真牛啊,佩服

----------------解决方案--------------------------------------------------------
第一个正方形里的3 和最后一个里的5 可以去掉耶 是错误,还是人为!!!



[此贴子已经被作者于2007-9-27 0:58:53编辑过]


----------------解决方案--------------------------------------------------------
eastsun是做什么工作的啊?好奇
----------------解决方案--------------------------------------------------------
回复:(Eastsun)LS嫌数独求解部分代码太长了吗?那就...
厉害啊,比我的短多了

LZ能讲一下原理吗?

不过为什么运行结果是死循环?

----------------解决方案--------------------------------------------------------
以下是引用易水辰在2007-9-27 0:54:30的发言:
第一个正方形里的3 和最后一个里的5 可以去掉耶 是错误,还是人为!!!


那个,本来就是这样设计的.
棋盘上数字颜色为红色的表示是固定的数字,鼠标在上面单击不会有任何反应
而其它颜色的棋子表示是由玩家来设置的,在上面点击会出现0~9这10个数字,其中为绿色的数字表示这个位置能够放置的棋子,0表示清除该位置以放的棋子.

[此贴子已经被作者于2007-9-27 14:25:24编辑过]


----------------解决方案--------------------------------------------------------
以下是引用kingstarer在2007-9-27 11:34:36的发言:
厉害啊,比我的短多了

LZ能讲一下原理吗?

不过为什么运行结果是死循环?

就是简单的回溯求解呀.
我一开始给的那个是非递归算法,所以代码会长点,但效率高很多.
另外不存在你说的死循环.
以我代码中给出的数独为列,下面是输入及运行结果:
>java S 000004076801000030046003000000020701100706005507030000000900810050000204910800000
> 395284176871659432246173589439528761182796345567431928724965813658317294913842657
----------------解决方案--------------------------------------------------------

回复:(Eastsun)以下是引用kingstarer在2007-9-27 1...

看不懂u|=(p-i)%9*(p/9^i/9)*(p/27^i/27|p%9/3^i%9/3) ==0?1L<<b[i]:0;
这句话啊,LZ能讲解一下吗?


ps:
java S 000000000000000000000000000000000000000000000000000000000000000000000000000000000好像会出现死循环


----------------解决方案--------------------------------------------------------

不是死循环.
你这个用法它会将所有符合数独要求的棋子分布都打印出来.
而这个数量非常之大,估计会输出几个小时..


----------------解决方案--------------------------------------------------------
以下是引用hwoarangzk在2007-9-27 9:48:05的发言:
eastsun是做什么工作的啊?好奇

俺是个学生~
----------------解决方案--------------------------------------------------------

牛的!


----------------解决方案--------------------------------------------------------
  相关解决方案