2013年10月13日

Oil Deposits

摘要: hdu1241:http://acm.hdu.edu.cn/showproblem.php?pid=1241题意:就是找出有多少块有石油的区域,就是数组中的@,这边相邻指的是是周围的八个位置。题解: dfs,从一块油田的位子开始,朝着与他相邻的8个方向收索,遇到油田就把它变成不是油田,并往下继续。遍历一下,就知道有多少了 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 char map[102][102]; 7 int m,n; 8 void dfs(int i,int j){ 9 if(im|... 阅读全文

posted @ 2013-10-13 11:51 天依蓝 阅读(159) 评论(0) 推荐(0) 编辑

Tempter of the Bone

摘要: hdu1010:http://acm.hdu.edu.cn/showproblem.php?pid=1010题意: 输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间。S为起点,D为终点。并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷。所以你必须每秒走一步,且到D点时,所用时间为T。用深搜。解题思路: 用深收,但是直接用深收会超时的,必须加上剪枝这里要用奇偶剪枝的方式,减少收索次数。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 char map[8][8]; //记录原来的地图 阅读全文

posted @ 2013-10-13 11:49 天依蓝 阅读(169) 评论(0) 推荐(0) 编辑

Gnome Tetravex

摘要: zoj1008:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1008题目意思是有一个游戏,即给出一个图,该图是由n*n个小正方形组成,每个小正方形又由4个三角形组成,要求用这n*n个小正方形拼成一个图,该图的每个小正方形的相邻的三角形的中间的数是相同的题解:dfs从左到右边,从上到下,一个一个放,并且进行判断,是否合理,如果合理就放置,反之则回溯。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int map[26][4]; 阅读全文

posted @ 2013-10-13 11:47 天依蓝 阅读(291) 评论(0) 推荐(0) 编辑

Multiple

摘要: poj1465:http://poj.org/problem?id=1465题意:给你一个数n(0~4999);以及m个不同十进制的数,问有这些十进制数组成的最小的n的倍数是多少。如果有则输出,没有就输出0;题解:此题用BFS 。。这个题好在 用 余数判重剪枝。。BFS 如果不加以剪枝,一定会搜索的情况会很庞大。所以应该用余数判重 。为什么可以用余数判重? A=a*N +e 即A%N =e B= b*N+e即B%N=e当A B mod N的余数相同时,如果先出现A 。在A 后加上一个数 i 时 , 新的数 C = 10 *a*N + 10 *e+i;同样 B后加上数 i 时 , D = 10* 阅读全文

posted @ 2013-10-13 11:10 天依蓝 阅读(332) 评论(0) 推荐(0) 编辑

Rescue

摘要: hdu1242:http://acm.hdu.edu.cn/showproblem.php?pid=1242题意:给你一个n*m的矩阵,代表n*m个方格,每个方格可能是a,你的目的地,r你的起点,x警卫,#墙壁‘。’道路。每次你只能走一步,上下左右,且每一步花费一分钟,如果有路可以直接走,如果是x就必须杀死他才能走,且杀死他也要花费一分钟,遇到墙壁就不能走问你从起点到终点,最短的时间,如果不能就输出那么一句话。题解:用bfs,广收。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace st... 阅读全文

posted @ 2013-10-13 11:07 天依蓝 阅读(216) 评论(0) 推荐(0) 编辑

Knight Moves

摘要: poj2243:http://poj.org/problem?id=2243题意:给定象棋棋盘上的两个位置a,b,计算马从a到b所需要的步数的最小值。题解:把整个棋盘看成一个二维的图,a,b相当于两个点,然后做bfs即可 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 struct Node{ 8 int x; 9 int y; 10 int step; 11 }; //记录当前节点的坐标以及到起点的步数 12 13 int map[9][9]; //记录地... 阅读全文

posted @ 2013-10-13 11:02 天依蓝 阅读(178) 评论(0) 推荐(0) 编辑

Basic Wall Maze

摘要: poj2935:http://poj.org/problem?id=2935题意:在6*6的格子中,有一些,如果两个格子之间有墙的话,就不能直接相通,问最少要经过几步才能从起点走到终点。并且输出路径。题解:直接bfs 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 struct Node{ 8 int sal; 9 char path[50]; 10 11 }; //用来记录当前节点的到起点的最小值以及取得这个最小值所对应的路径 12 int sx ,sy... 阅读全文

posted @ 2013-10-13 10:56 天依蓝 阅读(165) 评论(0) 推荐(0) 编辑

导航