Algorithm
文章平均质量分 63
zhuxin
just for you
展开
-
旅行售货员问题(回溯法)
<br />题目描述我就不说了,但是给几个测试用例<br /> <br />input<br />4<br />-1 30 6 4<br />30 -1 5 10<br />6 5 -1 20<br />4 10 20 -1<br />output<br />25<br /> <br />input<br />7<br />-1 -1 -1 5 10 -1 -1<br />-1 -1 -1 -1 -1 3 -1<br />-1 -1 -1 -1 -1 -1 2<br />-1 8 -1 -1 -1 -1 -原创 2011-05-22 19:50:00 · 2191 阅读 · 0 评论 -
汉诺塔问题
#include #include void hanoi(int, char, char, char);void move(int, char, char);int main(void){ hanoi(3, 'A', 'B', 'C'); return 0;}//将n个塔座从a搬到c,b为辅助void hanoi(int n, char a, c原创 2012-03-29 13:42:59 · 2292 阅读 · 0 评论 -
二分查找
#include #include int binarySearch(int*, int, int, int*, int*);int main(void){ int left; int right; int array[] = {1, 5, 10, 12, 100, 666, 667, 800, 900, 1000}; printf("%d\原创 2012-03-29 13:53:19 · 273 阅读 · 0 评论 -
棋盘覆盖
/* 0 0 0 1 2*/#include #include #define MAXSIZE 100int total = 0;void chessBoard(int, int, int, int, int);int board[MAXSIZE][MAXSIZE];int power(int);int main(void){ int i原创 2012-03-30 13:55:48 · 690 阅读 · 2 评论 -
快速排序
#include #include int partition(int*, int, int);void qSort(int*, int, int);void swap(int*, int*);int main(void){ int i; int array[] = {11, 5, 20, 5, 100, 88, -987, 666, 0, 11, 11原创 2012-03-30 23:26:18 · 305 阅读 · 0 评论 -
归并排序
#include #include #include #include #define MAXSIZE 100#define ARRAYSIZE 8void mergeSort(int*, int);void _mergeSort(int*, int, int);//合并void merge(int*, int, int, int);//复制void c原创 2012-03-30 09:58:41 · 275 阅读 · 0 评论 -
已知三角形三条边,你能做什么?
假设三角形三条边分别为a,b,c。一求三角形面积: p = (a + b + c) / 2 s = sqrt(p * (p - a) * (p - b) * (p - c))二求内接圆半径: r = 2 * s / (a + b + c)三求外接圆半径: r = a * b * c / 4 * s原创 2012-04-02 17:27:40 · 486 阅读 · 0 评论 -
矩阵连乘问题
/* 输入示例: 6 30 35 15 5 10 20 25 DP: 0 i = j m[i][j]= min(m[i][k] + m[k + 1][j] + pi-1 * pk * pj) i < j原创 2012-04-03 12:43:40 · 395 阅读 · 0 评论 -
归并排序
/* 归并排序*/#include #include #include #include #define BASE 1024void mergeSort(int*, int, int);void merge(int*, int, int, int);int main(void){ int n; int i; int *arr原创 2012-08-09 10:29:32 · 455 阅读 · 0 评论 -
红黑树源代码
/* RBTree.h*/#ifndef _RB_TREE_H_#define _RB_TREE_H_#include #include #include #include using namespace std;templateclass RB_Tree{ private: RB_Tree(const RB_Tr转载 2012-08-10 16:52:55 · 2490 阅读 · 0 评论 -
最长公共子序列
#include #include #include #define MAXSIZE 100//最长公共子序列int LCS(const char *a, const char *b, char *result);int main(void){ char *a = "ABCBDAB"; char *b = "BDCABA"; char re原创 2012-03-28 12:53:49 · 287 阅读 · 0 评论 -
递归和非递归实现数组求和
#include #include #define MAXSIZE 100//定义结构体typedef struct Array{ int data[100]; int length;}Array;//非递归实现int sum (Array);//递归实现int sumRecursive (int[], int);int main(v原创 2012-03-25 23:21:49 · 802 阅读 · 0 评论 -
布线问题(迷宫问题)
<br /> 布线问题和迷宫问题是同一类题,我想大家对于题目应该很了解了吧。好吧,我用分支限界法做的,再加上C++ STL的辅助,其实还不<br />错。布线问题时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte<br />总提交:0 测试通过:0<br /><br />描述<br /> <br /> <br /> 假设要将一组元件安装在一块线路板上,为此需要设计一个线路板布线方案。各元件的连原创 2011-05-22 20:06:00 · 3577 阅读 · 0 评论 -
谁有本事解决codeblocks的这个问题?
今天在写活动安排问题时发现了codeblocks的一个问题#include#include#define MAXSIZE 100using namespace std;typedef struct activity{ int start; int end;}activity;bool compare(activity a,activity b);void greedySelector(activity act[],int n);int原创 2011-05-23 23:22:00 · 619 阅读 · 1 评论 -
最小生成树(prim算法)
<br /> 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图联通的最少的边。<br />假设V是图中顶点的集合,E是图中边的集合,TE为最小生成树中的边的集合,则prim算法通过以下步骤可以得到最小生成树: <br /> <br /> 1:初始化:U={u 0},TE={f}。此步骤设立一个只有结点u 0的结点集U和一个空的边集TE作为最小生成树的初始形态,在随后的算法执行中,这个形态会不断的发生变化,直到得到最小生成树为止。 <br /原创 2011-05-24 19:36:00 · 378 阅读 · 0 评论 -
(概率算法)主元素问题
<br /> 给定一个数组,如果其中有一个元素出现的次数大于数组大小的二分之一,那么这个元素就叫主元素。<br /> Let's begin<br />#include<iostream>#include<cstdlib>#include<time.h>#define MAXSIZE 100using namespace std;bool majority(int array[],int n);bool ME(int[],int);int main(void)原创 2011-05-25 20:44:00 · 674 阅读 · 0 评论 -
(贪心算法)单源最短路径
<br />单源最短路径<br /> 单源最短路径,如果用分支限界法做的话,感觉不是那么好。但是,用贪心算法的话,那就相当简单了。<br /> 思路:<br /> 两个集合,一个是V,一个是S。开始V中包含所有元素,S什么也没有。<br /> 1首先把源顶点放在S中,并标记以访问<br /> 2然后从V-S中找出离S最近的未被访问的顶点,放在S中,并标记以访问<br /> 3计算此顶点到V-S中剩下顶点的距离加上此顶点到源原创 2011-05-24 12:28:00 · 897 阅读 · 0 评论 -
最大子段和(动态规划)
问题描述: 给定由n个整数(可能为负整数)组成的序列A1,A2,A3,...,An,求该序列的连续子段的和的最大值。当所有整数均为负整数时定义其最大子段和为0例如{-2,11,-4,13,-5,-2}的最大子段和为20程序代码:#include#define MAXSIZE 100using namespace std;int MaxSum(int[],int);int main(void){ int n; int array[M原创 2011-05-25 16:24:00 · 561 阅读 · 0 评论 -
看你能做出来么(跳马之升级)?
<br />跳马<br />时限:1000ms 内存限制:10000K 总时限:3000ms<br />描述:<br />给一个200×200的棋盘,问国际象棋的马从给定的起点到给定的终点最少需要几步。 <br />(此题要求用广度优先搜索)<br /><br /><br /> <br />输入:<br />输入数据包含4个整数表示起点和终点的坐标。<br /><br /><br /> <br />输出:<br />输出从起点到达终点的最少步数。<br /> <br /> <br />输入样例:<br /原创 2011-05-25 19:15:00 · 398 阅读 · 0 评论 -
拉斯维加斯之n皇后问题
<br /> 八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。<br /> <br /><br /> 现在是n皇后,但是,idea还是一样的,相信大家一原创 2011-05-24 20:40:00 · 1031 阅读 · 0 评论 -
最长公共子序列
<br /> 最长公共子序列,而非最长公共子串,相信大家都知道。但是,或许,还是有一些人害怕。因为,他们害怕自己不会写。其实,完全没有必要,看看下面的推导公式。你如果一次看不懂,多看三遍。如果还不懂的话,那我无话可说。那只可能是你的智商不在这题的要求范围之内。那你就放弃吧。<br /> <br /> <br /> <br />c[i-1][j-1]+1 //如果stra[i]==strb[j]<br /> <br />c[i][j] <br /> <br /原创 2011-05-25 16:10:00 · 276 阅读 · 0 评论 -
堆排序
/*堆的定义: 堆排序算法的过程如下: 1)得到当前序列的最小(大)的元素 2)把这个元素和最后一个元素进行交换,这样当前的最小(大)的元素就放在了序列的最后, 而原先的最后一个元素放到了序列的最前面 3)的交换可能会破坏堆序列的性质(注意此时的序列是除去已经放在最后面的元素), 因此需要对序列进行调整,使之满足于上面堆的性原创 2011-12-03 13:00:43 · 235 阅读 · 0 评论 -
冒泡排序
/* 冒泡排序 function bubblesort (A : list[1..n]) { var int i, j; for i from n downto 1 { for j from 0 to i-1 { if (A[j]原创 2011-12-03 13:27:56 · 200 阅读 · 0 评论 -
狼、羊、白菜的解法
第1步,运羊到河对岸,空船返回。 第2步,运狼到河对岸,并将羊运回。 第3步,运大白菜到河对岸,空船返回。 第4步,运羊到河对岸。 结束原创 2011-12-08 16:52:32 · 1854 阅读 · 0 评论 -
set相关操作源码
/* set相关算法*///set_uniontemplate OutputIterator set_union(InputIterator1 first1,InputIterator1 last1, InputIterator2 first2,InputIterator2 last2, OutputIterator result){ /原创 2012-08-15 11:28:27 · 562 阅读 · 0 评论