摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553方法:1.可以用对称的思想,即:如果N是偶数,则只计算第一个皇后分别放在第一行的位置1到N/2这N/2个情况的结果和,最后再乘以2。如果是奇数,再单独计算一个在N/2+1这个位置的结果。 2.一个皇后如果放在一个位置,要把该位置对应的行列上的位置和以该位置为起点,从左下 和 右下45读的两个方向延伸穿过的位置都设置为不可再放。 3.在状态数中,在第i层为第i个皇后找位子其实就是在棋盘的第i行找。找不到就返回,否则修改棋盘,继续收索,直到第N层也搜索成功,此时给结果加1.感想:后期多看。代... 阅读全文
posted @ 2013-04-16 17:58 kbyd 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1180方法:此题和一般的地图广搜差不多,唯一的变化就是在楼梯那里,楼梯那里考虑的方式如下:1.根据楼梯的初始状态和当时达到楼梯旁边的位置时走的时间来确定这个时候楼梯的方向。2.再根据当时前进的方向 和 当时楼梯的方向确定走过去要多少的时间,是用1还是2.3.不管走过去后时间是多少,如果过去后发现是障碍物或已经去过了,则该位置不进队列,不考虑从该位置开始的一个广搜。4.如果可以从楼梯过去的那个位置进行广搜,那么该位置开始广受的广搜索不能再经过刚才才经过的楼梯,要判断这个信息不能简单通过设置visite 阅读全文
posted @ 2013-04-16 17:37 kbyd 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1242方法:将几个r去找一个a的哪个r先找到a 的问题转换成 一个a去找多个r看先找到哪个r问题,可以使用优先队列,建模成一个单源最短路径来解答。但是本程序实现中没有用优先队列,而是就一班的广搜,由于有多个目标,题目要求找到到目标最快的一个目标,所以就在广搜到每一个目标的每一个时候,用达到其的时间用比较的方式去更新当前维护的一个最小到达时间。感想:要换角度思考问题.View Code #include <iostream>#include <queue>using names 阅读全文
posted @ 2013-04-16 14:03 kbyd 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1026方法:状态搜索树的节点保存4个东西,坐标x,y,当前总共耗时,其最短路径前驱指针。当前节点根绝自身情况计算出耗时,然后加上前面一个节点累计的耗时得到当前到该节点使用的耗时,配合使用用当前累计时间排序的优先队列使用dijkstra算法原理。感想:图论dijkstra算法,熟悉其证明方法。代码:View Code #include <iostream>#include <queue>#include<stack>using namespace std;int r 阅读全文
posted @ 2013-04-16 13:47 kbyd 阅读(175) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示