上一页 1 ··· 3 4 5 6 7
摘要: 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) 编辑
摘要: View Code 1 /* 2 问题:按字典序全排列 3 法一:分别以数字i开头 利用递归深搜 4 */ 5 #include<iostream> 6 using namespace std; 7 bool flag[10]; 8 int n,m; 9 void digui(int h,int b[],int x)10 {11 int i;12 if(x==m)13 {14 for(i=0;i<m;++i)15 cout<<b[i];16 cout<<endl;17 return ;18 }19 for(i=1;i<... 阅读全文
posted @ 2012-02-09 20:16 知行执行 阅读(219) 评论(0) 推荐(1) 编辑
摘要: View Code 1 /* 2 题意: 3 共有N个,一次最多取M 个 4 思路: 5 这是一道技巧性的题,考察从题中找规律! 6 假设有a ,b两个人 a 先取 看是否能赢: 7 若a能赢则最后一次是a取,且一定是取了M个 8 而倒数第二次是b取,且一定是取1个, 9 因此倒着看就是一个状态转移了总数为N个,总数为N-(M+1),N-2*(M+1).....10 情况下a先取,能赢得问题了 11 */12 #include<iostream>13 using namespace std;14 int n,m;15 int main()16 {17 int t;18 cin> 阅读全文
posted @ 2012-02-09 19:20 知行执行 阅读(145) 评论(0) 推荐(0) 编辑
摘要: View Code 1 /* 2 思路: 3 把这个无向图看成有向图 4 相当于无向图 的边走两边,同一条边走的方向不同 5 相当于求 有向图的 欧拉回路 6 */ 7 #include<iostream> 8 #include<cstring> 9 using namespace std;10 struct node 11 {12 int b;13 bool flag;14 node *next;15 }E[100010];16 node table[10010];17 int n,m;18 void clur(int x)19 {20 node *p=tab... 阅读全文
posted @ 2012-02-09 15:55 知行执行 阅读(184) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7