摘要: 今天也算是练习了一下记忆化搜索,这道题也包含很多值得注意的地方1、 输入的两个数不一定前者比后者大2、 变换的过程中可能会超出int范围3、 为了不超时可以作下预处理#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define MAXINT 1000001int res[MAXINT];int dfs(long long t){ if(t<=1) return 1; if(t<=MAXINT && res[t]!=0) return r 阅读全文
posted @ 2012-02-28 18:17 书山有路,学海无涯 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 一道很好的搜索题目,但是好久没有弄懂题意,题意大致是这样的:在一个地图上给出自己的位置‘Y’,目的位置‘T’,两种墙‘S’和‘B’,还有河‘R’,以及空地‘E’。‘S’和‘R’是不能穿过的,‘B’可以被炸毁但需要一个单位时间,每走一步也需要单位时间。求从初始位置到目的位置至少需要多长时间。dfs和bfs都可以来搜索,dfs复杂度比较高,但可以用记忆化搜索,我选择的是bfs,因为炸毁墙需要一个单位时间,所以按照平常的广搜是不行的,只能一各单位时间一个单位时间的来走,不能一次走两个单位时间。所以每次到达‘B’时,需要等待一个时间。#include<iostream>#include&l 阅读全文
posted @ 2012-02-28 16:49 书山有路,学海无涯 阅读(656) 评论(0) 推荐(0) 编辑