摘要: View Code 1 /* 2 问题:给出一些两端染有颜色木棒, 3 把这些木棒以相同的颜色对接 4 是否能形成一条直线 5 思路: 6 1.输入 以文件结束 7 2.利用字符串hash ,在hash表中存放的 8 是这是第几个端点,也能表明在这位置的端点 9 是否出现过10 3.并查集判断连通性11 4.看是否存在欧拉路 12 13 呵呵,没想到数组开这么大,用了hash记录点 竟然一次过了,欣喜,加油!!! 14 */15 #include<iostream>16 #include<cstdio>1... 阅读全文
posted @ 2012-02-10 23:24 知行执行 阅读(207) 评论(0) 推荐(0) 编辑
摘要: View Code 1 /*参考 DP 中的 15题*/ 2 #include<iostream> 3 #include<cstring> 4 #define min(x,y) x<y?x:y 5 using namespace std; 6 int num[110][110]; 7 char ch[110]; 8 int comp(int i,int j) 9 {10 if(ch[i]=='('&&ch[j]==')')return 1;11 if(ch[i]=='['&&ch[j] 阅读全文
posted @ 2012-02-10 18:05 知行执行 阅读(218) 评论(0) 推荐(0) 编辑
摘要: View Code 1 /* 2 问题:输入一组括号 看需要最少添加几个括号才能使 3 这组括号匹配 4 思路:DP 5 dp[j][i]表示从第j个字符到第i个字符这个括号串最少需要添加几个能使 6 这个子串匹配 7 则有 8 1.如果从j 到 i-1没有能与i匹配的则有 9 dp[j][i]=dp[j][i-1]+1;10 2.若从j 到i-1有与i匹配的(假如为第k个)则有11 dp[j][i]=dp[j][k-1]+dp[k+1][i-1];(可能有多个与i都匹配 取最小的) 12 */ 13 #include<ios... 阅读全文
posted @ 2012-02-10 17:26 知行执行 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 1.最小生成树---普里姆 或 kruskal 算法2.一笔画问题(一个图走过所有边且不重复)---欧拉路 或 欧拉回路3.图的连通性问题---并查集 阅读全文
posted @ 2012-02-10 16:38 知行执行 阅读(141) 评论(0) 推荐(0) 编辑
摘要: View Code 1 /* 2 问题描述:给定一个图求最小生成树 3 思路: K r u s k a l算法每次选择n- 1条边, 4 所使用的贪婪准则是: 5 从剩下的边中选择一条不会产生环路的具有 6 最小耗费的边加入已选择的边的集合中。 7 注意到所选取的边若产生环路则不可能形成一棵生成树。 8 K r u s k a l算法分e 步,其中e 是网络中边的数目。 9 按耗费递增的顺序来考虑这e 条边,每次考虑一条边。 10 当考虑某条边时,若将其加入到已选边的集合中会出现环路, 11 则将其抛弃,否则,将它选入。 12 利用并查集的求法判断是否会构成回路:若他们根节... 阅读全文
posted @ 2012-02-10 16:26 知行执行 阅读(246) 评论(0) 推荐(0) 编辑