【bfs】拯救少林神棍(poj1011)】的更多相关文章

Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度.请你设计一个程序,帮助乔治计算木棒的可能最小长度.每一节木棍的长度都用大于零的整数表示. Input 输入包含多组数据,每组数据包括两行.第一行是一个不超过64的整数,表示砍断之后共有多少节木棍.第二行是截断以后,所得到的各节木棍的长度.在最后一组数据之后,是一个零. Output 为每组数据,分别输出…
http://poj.org/problem?id=1011 题意:若干根棍子被截成小段的木棒,现在给你这些木棒,问最短可以拼出的棍子长度. 题解:搜索,dfs(r,m) 二个参数分别代表还剩r个木棒,当前棍子还剩m长度. 从dfs(N,L)搜到dfs(0,0)停止. 棍子从大到小排序 从小到大枚举L 四个剪枝 0.考虑木棒大多都一样长的特殊情况. 多余的枚举: “如果某个木棒在当前棍子不能用,那么之后必定会用到” 1.第一个木棒回溯时(由于后续无法继续拼接导致不能用),后面总归会还是要把它作…
[描述:] 公主被恶人抓走,被关押在牢房的某个地方.牢房用N*M (N, M <= 200)的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫(x). 英勇的骑士(r)决定孤身一人去拯救公主(a).我们假设拯救成功的表示是"骑士到达了公主所在的位置".由于在通往公主所在位置的道路中可能遇到守卫,骑士一旦遇到守卫,必须杀死守卫才能继续前进. 现假设骑士可以向上.下.左.右四个方向移动,每移动一个位置需要1个单位时间,杀死一个守卫需要花费额外的1个单位时间.同时假设骑士…
题目: 7-1 拯救007 (30 分) 在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!(据说当年替身演员被最后一条鳄鱼咬住了脚,幸好穿的是特别加厚的靴子才逃过一劫.) 设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50).池心岛是以 (0, 0) 为圆心.直径15米的圆.给定池中分布的鳄鱼的坐标.以及007一…
总时间限制:  10000ms 内存限制:  65536kB 描述 公主被恶人抓走,被关押在牢房的某个地方.牢房用N*M (N, M <= 200)的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫(x). 英勇的骑士(r)决定孤身一人去拯救公主(a).我们假设拯救成功的表示是“骑士到达了公主所在的位置”.由于在通往公主所在位置的道路中可能遇到守卫,骑士一旦遇到守卫,必须杀死守卫才能继续前进. 现假设骑士可以向上.下.左.右四个方向移动,每移动一个位置需要1个单位时间,杀死一个守卫…
又是类似骑士拯救公主,不过这个是朋友拯救天使的故事... 不同的是,天使有多个朋友,而骑士一般单枪匹马比较帅~ 求到达天使的最短时间,杀死一个护卫1 units time , 走一个格子 1 unit time .SO,杀死一个护卫到达那个格子 2units time. 第一反应是广搜,就搜咧 = =.. WA了,交hdu上 AC了,hdu数据真弱啊... 想了想,想通了,因为一般广搜的话必须都是1个时间才能搜,才能保证这个BFS树是等距离向外伸展的,而这个不是等距离的,所以需要一些处理. 1.…
2843 拯救炜哥 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一天,炜哥和欧能干一起去大魔王家里做(dao)客(luan),不巧被魔王发现了.魔王将炜哥和欧能干抓走了,关在了两个不同的房间里.魔王听说吃炜哥的肉可以长生不老(炜哥=唐僧?),于是开始准备晚饭.由于魔王疏忽,将一把钥匙漏在了欧能干的房间里.欧能干知道这个消息后,赶紧去拯救炜哥.炜哥生命危在旦夕,欧能干必须马上离开这个房间,救出炜哥.于是他找到了编程大牛的你.…
之前用dfs剪枝AC了,http://www.cnblogs.com/ediszhao/p/4741825.html,这次用bfs+priority_queue来尝试解题 题意:拯救行动,天使r有多个朋友a(friends,在这里被坑了几次,没看清题意),天使被关在牢房里,等着朋友来拯救,求拯救天使的最短距离. 以天使为起点进行bfs,找到的a就是最小拯救时间值. #include <iostream> #include <cstring> #include <queue&g…
我的BFS板子 struct node{/*略*/};//表示一个状态 std::map<node,bool>vis;//判断每个状态是否已访问过 std::queue<node>q;//BFS扩展队列 //BFS主代码 q.push(start_node); //初始节点入队 vis[start_node] = 1; while (!q.empty()) { node head = q.front(); //去队首元素进行拓展 q.pop(); for (int i : dire…
数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过…