1.kuangbing 棋盘问题,给定一个n*n的棋盘,只有某些特定的位置能放旗子,并且保证每行每列只能放一个棋子。每个棋子都是一样的,求有多少种放法。
思路:一行一行的搜,在某行的时候枚举看哪一列能放,放过的列标记,而且别忘了这一行不放的分支。
一行一行的搜确保得出的是组合数,而不是排列数。
2.kuangbing Dungeon Master 三维的bfs,很有意思的题目,给定一个三维空间的迷宫,层数,行,列都不超过30,
迷宫存在障碍物,从起点到终点的最小步数;
思路:另开一维纪录层数,其他也没啥了,就是最小步数模型。
3.kuangbing [POJ - 3278] 大意:农夫抓牛,两者在一维坐标中,输入n,k 分别代表农夫和牛的位置0 ≤ n ≤ 100,000, 0 ≤ K ≤ 100,000; 农夫有三次移动方式:+1,-1,乘2,求农夫抓到牛的最小步数。
思路:很容易想到bfs,找最小步数,但是会re是我没想到的。刚开始一看题,好家伙,做过,直接写个裸的bfs,满怀信心的直接交。RE了。 (下手敲代码之前一定要考虑时间复杂度。)先来考虑下坏情况,从0走到100000,每次都乘2最快也得17步,直接bfs, 3的17次方,你不RE 谁 RE。那来想想小的剪枝,再过不了就只能用双向bfs了。
剪枝:首先当n>md的时候没办法,只能每次 -1,就没有搜的必要了。在走的时候每个点到1次,不在(0~100020范围内的点没必要去看它,肯定不是最优的)然后就能过了。总之,这题并不难。