DFS
文章平均质量分 81
bobten2008
这个作者很懒,什么都没留下…
展开
-
poj 1416 Shredding Company
/** * DFS:由于在遍历时,preTemp会随时变化,因此当找到当前最优解时需要用preBest来保存preTemp */#include #include #define MAX_LEN 6using namespace std;int preTemp[MAX_LEN + 1];int preBest[MAX_LEN + 1];int dis[MAX原创 2009-05-31 16:13:00 · 862 阅读 · 0 评论 -
POJ 1632 Vase collection
Vase collectionTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 1536 Accepted: 552DescriptionMr Cheng is a collector of old Chinese porcelain, more spec原创 2009-11-06 14:10:00 · 1407 阅读 · 0 评论 -
1599 Station Balance
/*状态压缩,比特运算五进制表示spe的状态, 三进制表示当前cham的状态然后直接DFS即可*/#include #include #define MAX_CH 5#define MAX_SP 10using namespace std;int chamNum, speNum;int spes[MAX_SP + 1];int exp3[MA原创 2009-10-28 21:15:00 · 776 阅读 · 0 评论 -
POJ 1639 Picnic Planning
/*这题调得快吐血了,做得真辛苦这题主要就是求最小限度生成树,即给定一棵树,在某个节点上加上这个节点的最大度数,然后求一棵满足这样条件的树且最终的权值和最小。这道题就是在根节点Park上做度数限定,然后求最小限度生成树最小限度生成树的求法与MST(最小生成树密不可分)主要思路有以下几个步骤1)将根节点从图中去除掉2)对去除根节点的图求MST,注意这里去除根后的图可能是原创 2009-11-07 19:33:00 · 1702 阅读 · 0 评论 -
POJ 1635 Subway tree systems
/*主要是根据输入串建树,然后对树DFS,重新获得一个排序后的01串。对两个输入串分别运用上述方法分别得到两个排序后的01串,如果两个串相等则same,否则different关键在于DFS时对子树返回的01串进行存储和排序,然后重组比如对于0100101100100111和0011000111010101,重组后分别变成:0001101100101101和0001110011原创 2009-11-07 10:48:00 · 1306 阅读 · 1 评论 -
POJ 1694 An Old Stone Game
/*先建树,然后对树进行后序遍历假设nodes[i].score表示以i为根的子树需要的石头数,则(1)对于叶子节点其score为1(2)对于非叶子节点,先将其所有子节点按照其所需score数降序排序,然后遍历其子节点 int need = 0, rest = 0, need表示遍历到当前子树需要的石头数,rest表示剩下的石头数 for( sid : is son原创 2009-11-02 20:49:00 · 649 阅读 · 0 评论 -
poj 1699 Best<script type=
Best SequenceTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 2718 Accepted: 1062DescriptionThe twenty-first century is a biology-technology developing原创 2009-11-02 09:23:00 · 733 阅读 · 0 评论 -
POJ 1655 Balancing Art
Balancing ActTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 4573 Accepted: 1800DescriptionConsider a tree T with N (1 For example, consider the tree:原创 2009-11-13 13:24:00 · 819 阅读 · 0 评论 -
POJ 1826 The Best Farm
The Best FarmTime Limit: 3000MS Memory Limit: 30000KTotal Submissions: 1519 Accepted: 455DescriptionBackground In a fight against invaders, farmer William get the原创 2009-11-24 19:40:00 · 1109 阅读 · 0 评论 -
POJ 2044 Weather Forecast
/*深度优先搜索,需要记忆状态,状态的记忆包括四个角到目前为止没有下雨的时间+云当前所在的位置+当前的天数,一开始写错了一个地方害我调了N久,最近为啥没状态*/#include #define MAX_N 370#define MAX_S 80000using namespace std;struct day{ int state;}day原创 2009-12-26 14:57:00 · 1186 阅读 · 0 评论 -
POJ 1679 The Unique MST
/*要求:这道题的要求是给定一个无向联通图,判断这个图的最小生成树MST是不是唯一的,如果是唯一的则打印出最小值,如果不是唯一的给出提示分析:采用Kruskal算法来计算最小生成树,仔细分析其过程不难发现这个图的MST不唯一的充分必要条件是在Kruskal运算过程中如果选中的当前边a构成了环,且在所有包含这条边的环中如果存在和这条边权值相等的边b,则MST不唯一,因为总是可以原创 2009-11-03 20:57:00 · 764 阅读 · 0 评论 -
POJ 1691 Painting A Board
/*DFS拓扑排序,要注意局部状态的记录建图的方法:如果矩形a是紧邻b上方的矩形,则graph[a][b] = trueDFS时,每次记录上一次用到的刷子的颜色,然后从当前记忆保存的graph中寻找入度为0的矩形,如果其颜色不等于上一次用到的刷子的颜色,则总数+1,然后从新的矩形中清除掉以这个矩形为端点的变,继续下一次DFS*/#include #define M原创 2009-11-03 17:21:00 · 828 阅读 · 0 评论 -
POJ Dreisam Equations
DFS + 表达式求值,输入处理很恶心 #include #include #define MAX_N 100using namespace std;int exp[MAX_N + 1];int curExp[MAX_N + 1];int expLen, expVal, curVal;int opType[3] = {-1, -2, -6};bool原创 2009-09-05 22:01:00 · 1473 阅读 · 5 评论 -
POJ 1078
http://acm.pku.edu.cn/JudgeOnline/problem?id=1078这题是典型的DFS回溯题,主要意思是给定两个整数,要求分别对这两个数进行因子分解,因子必须是100以内且不能重复。问,这两个整数是否存在不相交的因子集,例如:24和12,分别可以分解为2 * 12, 3 * 4,所以存在;而49和343就不行了,49不能分解(否则有7重复了),343只原创 2009-09-04 13:34:00 · 1222 阅读 · 0 评论 -
POJ 1103 Maze
/* dfs判断环,建图需要技巧,图变成了三维的(h * w * 2)第三维的2用来表示一个格子被/或者/分 成的两块 核心就是判断环,但是由于这题特殊性使得判断环比较简单;利用分别遍历h * w * 2个点,遍历到的点 设置为visited, 当遇到遍历初始点时且这个初始点不是前驱则表示找到一条环 注意一定要判断是否是前驱,否则会产生判断错误*/#原创 2009-09-07 13:51:00 · 1291 阅读 · 0 评论 -
POJ 1124 Oh, Those Achin' Feet
http://acm.pku.edu.cn/JudgeOnline/problem?id=1124/* 利用DFS回溯求所有最短路径(最短路径可能不止一条) 行走的时候只有当下一个点是终点或者下一点是街道时才可以继续走到下一个点 注意剪枝 注意entrance/exit不参与load,只有街道参与load,即最终结果里凡是非街道结点都要输出0原创 2009-09-19 15:35:00 · 959 阅读 · 0 评论 -
POJ 1128 Frame Stacking
/*http://acm.pku.edu.cn/JudgeOnline/problem?id=1128DFS回溯实现拓扑排序*/#include #include #include #include #define MAX_N 32#define MAX_L 26using namespace std;char mapv[MAX_N + 1][M原创 2009-09-20 15:10:00 · 1003 阅读 · 0 评论 -
POJ 1143 Number Game
/*http://acm.pku.edu.cn/JudgeOnline/problem?id=1143 博弈论(DFS + 状态记忆表 + 位运算), 假定一个走的人是A,第二个走的人是B A在当前状态下一定能够取胜的条件是:当前状态下存在一个数字,对于当A取走 这个数字后的状态,B不管怎么取都得输(即B不能够绝对取胜) 有了上面的分析就很容易看出这是一道博弈题,最终会形原创 2009-09-26 12:04:00 · 2833 阅读 · 0 评论 -
POJ 1816 Wild Words
/*http://acm.pku.edu.cn/JudgeOnline/problem?id=1816trie树下的DFS, 感觉非常好的一道题,能说明很多问题*/#include #include #define MAX_M 100000using namespace std;//输入的pattern数以及待匹配的单词数int pNum, strNum原创 2009-10-05 16:04:00 · 1130 阅读 · 4 评论 -
POJ 1186 方程的解数
方程的解数Time Limit: 15000MS Memory Limit: 128000KTotal Submissions: 4000 Accepted: 1339Case Time Limit: 5000MSDescription已知一个n元高次方程: 其中:x1, x2,...,xn是未知数原创 2009-10-09 19:11:00 · 1339 阅读 · 0 评论 -
POJ 1256 Anagram
/*求有任意n个字母组成的所有长度为n的字符串字符之间的大小关系是A 有求输出按照由小到大的顺序*/#include #include #include #define MAX_L 13using namespace std;char input[MAX_L + 2];char res[MAX_L + 2];bool v[MAX_L + 2];原创 2009-10-16 14:05:00 · 617 阅读 · 0 评论 -
GOOGLE的一道笔试题—求给定连通无环无向图可以生成的最小高度树
/*最近看到一道谷歌笔试题,“已知一颗无向无环连通图T的所有顶点和边的信息,现需要将其转换为一棵树,要求树的深度最小,请设计一个算法找到所有满足要求的树的根结点,并分析时空复杂度(描述算法即可,无需代码)”其实就是给定一个无向连通图,求以哪些顶点为根可以得到深度最小的树,思路比较简单,主要有两个步骤:(1)首先选取1号结点作为树根,进行一遍DFS,在DFS时计算每个节点原创 2010-04-11 16:36:00 · 3529 阅读 · 5 评论