最大公约数 1 /** 2 最大公约数(GCD,greatest common divisor),欧几里得算法啦~~ 3 */ 4 5 #include 6 using namespace std; 7 8 //递归形式 9 /*int gcd(int a, int b)10 {11 if(b == 0)12 return a;13 else14 return gcd(b, a % b);15 }*/16 17 //非递归形式18 int gcd(int a, int b)19 {20 while(b != 0)21 {22 ... Read More
posted @ 2013-12-01 11:05 yiyi_xuechen Views(246) Comments(0) Diggs(0) Edit
1 /** 2 定义 3 ⒈ 对于一个集合D,D中任意有限个点的线性组合的全体称为D的凸包。 4 ⒉ 对于一个集合D,所有包含D的凸集之交称为D的凸包。 5 可以证明,上述两种定义是等价的 6 7 概念 8 1. 点集Q的凸包(convex hull)是指一个最小凸多边形,满足Q中的点 9 或者在多边形边上或者在其内。 10 2. 一组平面上的点,求一个包含所有点的最小的凸多边形,这就是凸包 11 问题了。这可以形象地想成这样:在地上放置一些不可移动的木桩,用 12 一根绳子把他们尽量紧地圈起来,并且为凸边形,这就是凸包了。 13 14 常用方法: 15 穷举法,格雷... Read More
posted @ 2013-12-01 11:04 yiyi_xuechen Views(883) Comments(0) Diggs(0) Edit
1 /** 2 给出线段AB以及线段CD,只要判断A、B两点在直线CD的两端,并且C、D两点在直线AB的两端即可。 3 用叉乘进行判断。 4 5 问题描述 6 下面给出的是一个判断线段相交的次数 7 8 输入: 9 n:线段的个数 10 seg.begin.x,seg.begin.y,seg.end.x,seg.end.y:分别表示线段p1p2的点坐标 11 12 输出: 13 n个线段中两两相交的次数 14 15 样例输入 16 2 17 1 0 0 0 18 0 1 0 0 19 样例输出: 20 1 21 */ 22 23 #include 24 using... Read More
posted @ 2013-12-01 11:03 yiyi_xuechen Views(303) Comments(0) Diggs(0) Edit
1 /** 2 题目描述: 3 输入N个学生的信息,然后进行查询。 4 5 输入: 6 输入的第一行为N,即学生的个数(N 40 #include 41 #include 42 #include 43 using namespace std; 44 45 struct Student 46 { 47 char no[100]; 48 char name[100]; 49 char sex[5]; 50 int age; 51 52 bool operator = base) 79 { 80 ... Read More
posted @ 2013-12-01 11:01 yiyi_xuechen Views(227) Comments(0) Diggs(0) Edit
C++的Algorithm函数库中存在一系列的查找函数,使用起来很方便: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int all[14]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 4, 5, 6}; 9 int *a = find(all, all + 11, 8);//在all的前11个元素中查找8,如果存在,则返回8所对应的指针10 printf_s("%d\n", *a);11 12 int all2[4] = {... Read More
posted @ 2013-12-01 10:59 yiyi_xuechen Views(179) Comments(0) Diggs(0) Edit
要注意两种不同的初始化方法以及算法复杂度问题。 1 /** 2 高精度整数的四则运算—— + - * / % 3 以进制转换为例,输出X的N进制表示的数 4 5 题目描述 : 6 将M进制的数X转换为N进制的数输出。 7 8 输入: 9 输入的第一行包括两个整数:M和N(2 21 #include 22 #include 23 using namespace std; 24 25 #define maxDigits 100 26 27 ////高精度整数类 28 class bigInteger 29 { 30 pub... Read More
posted @ 2013-12-01 10:58 yiyi_xuechen Views(380) Comments(0) Diggs(0) Edit
1 /** 2 并查集定义: 3 并查集是一种树形数据结构,用于实现如确定某个集合含有哪些元素、判断 4 某两个元素是否存在于同一个集合中、求集合中元素的数量等问题。 5 并查集主要操作: 6 (1)合并两个不相交的集合; 7 (2)判断两个元素是否属于同一集合。 8 9 题目描述: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直10 接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(11 但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设12 多少条道路? 13 输入:14 测试输入包含若干测试用例。每个测试用例的第... Read More
posted @ 2013-12-01 10:57 yiyi_xuechen Views(182) Comments(0) Diggs(0) Edit
本文主要介绍了最小生成树的两种解决办法:kruskal以及prim 1 /** 2 Kruskal算法流程: 3 (1)初始时所有节点属于孤立的集合; 4 (2)按照边权递增顺序遍历所有的边,若遍历到的边两个节点仍分属于不同的 5 集合(该边即为联通这两个结合的边中权值最小的那条),则确定该边为最小生 6 成树上的一条边,并将这两个顶点分属的集合合并; 7 (3)遍历完所有的边之后,原图上所有节点属于同一个集合则被选取的边和原图 8 中所有节点构成最小生成树;否则原图不连通,最小生成树不存在。 9 10 11 样例输入: ... Read More
posted @ 2013-12-01 10:56 yiyi_xuechen Views(218) Comments(0) Diggs(0) Edit
本文主要讨论了最短路径的三个算法:Floyd,Dijkstra以及Bellman_Ford的实现方法以及他们之间的区别与联系 1 /** 2 Floyd算法流程: 3 若edge[i][j]表示从结点i到结点j,中间只能经过编号小于k的点时的最短路径长度, 4 我们可以由这些值确定当中间允许经过编号小于等于k的结点时,它们之间的最短路径长 5 度。同样,与原情况相比,新情况中允许 出现在中间路径的结点新增了编号为 k 的结 6 点,同理我们确定 edge[i][k] + edge[k][j]的值与edge[i][j]的值,若前者较小则该值代 7 表了新情况中从结点i到... Read More
posted @ 2013-12-01 10:52 yiyi_xuechen Views(253) Comments(0) Diggs(0) Edit
18. 移除特定元素——remove 1 #include 2 #include 3 #include 4 5 //remove 6 #include 7 #include 8 using namespace std; 9 10 int main()11 {12 int all[11] = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};13 int *a = remove(all, all + 11, 2);// 移除all中所有数值为2的元素14 15 for(int i = 0 ; i 2 #include 3 #include 4 5 //swap 6 #... Read More
posted @ 2013-12-01 10:51 yiyi_xuechen Views(170) Comments(0) Diggs(0) Edit