DFS
team79
我在努力。
展开
-
hdu 1181 DFS
深搜AC代码如下:#include #include #include #include using namespace std;struct Edge{ int to, next;};Edge edge[10000];int head[30], tot;bool mark[30];int add_edge( int a, int b ){ edg原创 2014-03-07 12:26:18 · 630 阅读 · 0 评论 -
hdu 4739 DFS
暴力搜索。。。。。。。其实可以直接排序后找多少组正方形就可以。。。。但是不知道为什么,不知道是数据弱还是怎么的。。。。AC代码如下:#include #include #include #include using namespace std;#define MAX_SIZE 120typedef struct{ int x, y;}Point;int number原创 2013-09-15 19:17:46 · 846 阅读 · 0 评论 -
hdu 2611 DFS
日!AC代码如下:#include #include #include #include #include using namespace std;#define MAX 0x3f3f3f3fstruct Node{ int num, index;};int N, P, cnt, record[110];Node nodes[110];int cmp( co原创 2014-02-16 14:53:30 · 655 阅读 · 0 评论 -
Lightoj 1094 DFS
DFS 搜索下经过每个点的最大长度就行。。。。AC代码如下:#include #include #include #include using namespace std;typedef struct{ int to; int weight; int next;}Edge;int head[40010], tot;Edge edge[70010];int N;原创 2013-10-29 18:28:25 · 601 阅读 · 0 评论 -
Lightoj 1073 数位DP+深搜
这一题,开始自己想的时候,是想要先处理下字符串,判断下两两合成一个字符串的时候的最小字符串,但是这样处理了之后就没有头绪了,最后参考了别人的思路。别人的思路如下:1.首先判断一下是否有字符串是其他字符串的字串,若有则取掉。2.计算将a与b合成一个字符串且b在前的时候,需要在a之前添加字母的最少个数increase[a][b] 比如 a = “abcdef” b=“mnbabc” 则原创 2013-12-26 20:37:25 · 1096 阅读 · 0 评论 -
poj 2044 DFS
AC代码如下:#include #include #include #include #include using namespace std;struct Node{ int a, b, c, d;};int statu[366];int N;int moves[][2] = { { 0, 0 }, { 1, 0 }, { -1, 0 }, { 0, 1 }, {原创 2014-01-11 15:17:33 · 842 阅读 · 0 评论 -
poj 1088 DFS+记忆化搜索
开始用的BFS。。。超时。。。。AC代码如下:#include #include #include #include #include using namespace std;struct Node{ int x, y; int h; bool operator<( const Node &b )const{ return h < b.h; }};int M原创 2014-01-18 09:17:08 · 672 阅读 · 0 评论 -
Lightoj 1049 DFS
很容易推出如果是五向边,那么这些构成环,现在就是要找怎么改变一些边的方向使之在有向图的时候也构成环,显然只需要对一个方向进行搜索,找相反方向边的权值和。然后再与另一方向的进行比较(通过sum来减直接求得),即可得出答案。AC代码如下:#include #include #include #include using namespace std;int weight[101][1原创 2013-12-29 08:33:00 · 745 阅读 · 0 评论 -
poj 2138 DFS
首先预处理,哪些字符串是可以互相到达的还有一点要注意的是,如果一个都找不出来,就输出原单词AC代码如下:#include #include #include #include using namespace std;struct Edge{ int to, next;};char s[1100][100];int N;Edge edge[400000];原创 2014-02-26 16:36:06 · 786 阅读 · 0 评论 -
poj 1240 DFS
不知道为什么分到DP分类里面去了,(pos1,pos2)表示一颗子数的前序遍历 (pos3,pos4)表示该颗子数的后序遍历 然后可以将该子树分成更小的子树,直到pos1==pos2每次的种类数就是 子树的种类树相乘*C( M,子树个数)AC代码如下:#include #include #include #include using namespace std;c原创 2014-03-24 15:33:29 · 747 阅读 · 0 评论