PKU3239 Solution to the n Queens Puzzle

      n皇后问题是大家都很熟悉的。根据n的不同和题目要求的不同有很多解法,比如:简单的年历回溯法,根据对称性,用位运算或者dancing_links做标记……
      但对于这道题,我们发现n达到了前所未有的300!不过还好只是求一个可行解,所以还是有突破口的。
      想象一下,在没有计算机的情况下,我们应该怎样达到目标?手工回溯?显然不可能!我们会先构造出一个“看似基本可行”的状态,然后层层逼近地去试着调整。于是,这就是我们接着道题的思路——我们把这种方法叫做“启发性修补”。
      既然提示到这里了,我想实现就很简单了。但这种启发性修补的思想并非所有人敢大胆尝试的。其实,这种运用随机生成状态,通过多次修补的方法还是很不错的。原因如下:
      1.题目的可行解随着输入规模的增大也是增大的。也就是说你成功的可能数是很多的!
      2.启发性修补采用的是尽可能多地操作,而非追求每次操作的完美性。但即便如此,借助于计算机强大的计算能力,我们可以尽可能使尝试次数达到最大,以达到目标。
      3.当我们不随机化种子时,搜索的效率很稳定。实际的每步操作的效率可以接近为期望。这样就发现实际可行的操作次数内基本可以得到解。
      如果我们用这种方法,即便n达到了500、1000、2000……我们也可以轻松应对!

      当然,此题还有巧妙的构造法!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值