01 2016 档案
摘要:解题技巧: 1. 求从左上角到右下角的最短时间,可用BFS,一步为一个单位时间。 BFS中的状态:人所在的行、列和能飞行的距离。 每步选择的转移有:(i)不飞行到达相邻位置 (ii)使用飞行到达更远的地方。 判断下一状态是否有效(是否可放入下一次进行BFS队列中)的根据是:下一状态的...
阅读全文
摘要:解题技巧: 1.将3*3矩阵的状态压缩成一个整数来表示,使用二进制位运算来进行状态转移。 2.使用广度优先搜索求最短路径,从1-9种状态转移进行尝试,保证第一次得到的答案是字典序最小的。 3.如果题目给出的状态为目标状态,也就是wwwwwwwww,则应该输出11(表示先按1位置一次,再按1位置...
阅读全文
摘要:解题技巧: 1.输入的树可能不是根据从根节点到子节点的顺序输入的。 例如: 输入可能是: 3 1 0 1 100 2 1 -1 200 2 3 1 400 所以一个较笨的方法是:先存成矩阵的形式,再转换成邻接链表的形式。 2.接着是一个...
阅读全文
摘要:解题技巧: 1.地图扩展expand(). 2.目标状态压缩。代码如下: 1 #include 2 #include 3 using namespace std; 4 5 const int maxm = 18; 6 const int maxn = 18; 7 int m, n; 8 ...
阅读全文
摘要:结合样例和下面图中的几种情况考虑即可解决。代码如下: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main() { 7 int begin, end; 8 while (cin >> begi...
阅读全文
摘要:解题技巧:1.广度优先搜索 2.分离地图和人物位置状态 3.压缩人物位置状态为一个整数,以便去掉重复的状态#include #include #include #include using namespace std;struct Cor { int r, c; Cor(...
阅读全文
摘要:解题技巧:1.数独每个格子记录自身还能填的数字,每次寻找能填数字数最少的格子填充数字。 2.使用“禁用计数”的方式,记录每个格子某个数字被禁用的次数,以便脱离禁用后恢复可填性。#include #include #include #include using std::set;using s...
阅读全文
浙公网安备 33010602011771号