ZOJ 1002

今天做了一下 zoj 1002 。

这个题是对八皇后问题的一个扩展,加入了“墙”,用回溯法即可。

然后在具体的实现中,还是有很多问题要考虑的。

 

我最初的考虑是每放进一个blockhouse,就对地图做一下标记,指出它的影响(即哪些地方不能放了)。这样的话,地图就必须是局部变量了,因为要回溯就要恢复地图,对一个全局的地图恢复太费劲了。要局部变量就要写类,写各种构造函数,天啊,这个事,,。

 

用全局变量的话,就不能对地图有太大的改动,这样就必须动态地检查一个位置是否能放进一个blockhouse。

 

 

纠结于此,我在网上找找了, 洞庭散人 的解法不错,就照抄了一下。

 

基本的思路是这样:

从前往后,找到一个合法地址

放一个BH进去,递归向前

恢复地图,即这个地址不放BH, 递归向前。

 

用一个全局变量来记录可以达到的最大blockhouse数。

 

今天的收获是: 从算法到实现,还是有一定距离,需要一定技巧的。

 

 

你可能感兴趣的:(算法,扩展)