数据结构与算法
zhujianing^_^
这个作者很懒,什么都没留下…
展开
-
算法竞赛入门经典(第二版)习题解答参考(一)
习题1-1 平均数(average) #include#includeusing namespace std;int main(){ int a,b,c; scanf("%d %d %d",&a,&b,&c); printf("%.3lf",( a+b+c )/3.0 ); }习题1-2 温度(temperature)#inclu原创 2016-04-28 14:34:23 · 5087 阅读 · 0 评论 -
并查集
这个文章是几年前水acm的时候转的, 当时也不知道作者是谁, 要是有人知道的话说一下吧并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告转载 2017-04-16 16:49:40 · 249 阅读 · 0 评论 -
最长公共子序列(动态规划方法)和最长递增子序列(动态规划方法)
转载自点击打开链接练习:拦截导弹 最大上升子序列和转载 2017-04-18 02:51:49 · 254 阅读 · 0 评论 -
算法导论--选择第k小的数字,期望时间为n
期望为线性时间的选择算法代码:#include#include#include#include#include#define NUM 305using namespace std;int charaNum[NUM] ;//存放输入数据的数组int tempArr[NUM];int dis[NUM];int Partion(int *A,int left ,int原创 2017-04-12 16:43:02 · 480 阅读 · 0 评论 -
算法导论--快速排序
快速排序代码实现:#include#include#include#include#include#define NUM 305using namespace std;int charaNum[NUM] ;//存放堆的数组int Partition(int * A ,int left ,int right){ int key = A[right]; i原创 2017-04-12 14:23:37 · 316 阅读 · 0 评论 -
算法导论-归并排序
#include #define MAXNUM 100000using namespace std;int A[]={2,4,5,7,1,2,3,6};//需要被排序的数组//int A[]={4,41,52,26,38,57,9,49};//需要被排序的数组void printA(){ for(int i = 0;i<sizeof(A)/ sizeof(int);i++)原创 2017-03-16 06:14:38 · 557 阅读 · 0 评论 -
算法导论--堆排序(堆维护,建堆,堆排序)
维护堆的性质#include#include#include#include#include#define NUM 305using namespace std;int charaNum[NUM] ;//存放堆的数组/* * Max_Heapify()用于维护最大堆的性质,i是可能违反堆性质的节点,其孩子节点都满足堆的性质,num是堆中元素的个数。 */void Ma原创 2017-04-10 20:09:56 · 2557 阅读 · 0 评论 -
算法导论--分治策略求解最大子数组问题
#include#include#include#include#include#define NUM 305using namespace std;int charaNum[NUM] ;char arr[NUM];int max_left = 0;int max_right = 0;int find_max_crossing_subarray(int * disPr原创 2017-04-09 19:01:22 · 543 阅读 · 0 评论 -
利用归并排序求逆序数对
利用归并排序求逆序数对#include#include#include#include#include#define NUM 305#define MAXNUM 1000000using namespace std;int charaNum[NUM] ;char arr[NUM];int num = 0;int sum = 0;void Merge(int st原创 2017-04-08 18:46:47 · 405 阅读 · 0 评论 -
算法导论--插入排序递归和非递归写法
#include using namespace std;int arr[6]={5,2,4,6,1,3};void print_arr(){ for(int i = 0;i<sizeof(arr)/sizeof(int);i++) { cout<<arr[i]<<" "; } cout<<endl;}void insert_sort原创 2017-03-16 02:27:24 · 552 阅读 · 0 评论 -
《算法神探》笔记
《算法神探》笔记1 搜索问题:在可能的空间范围内,找到一个特定值。2 一个好的算法取决于发现数据结构中的结果并善加利用。3 高效的算法在于有用的信息。4 线性搜索算法的优势:易实现。5 二分法要点:总是将mid所指的数与目标数进行比较,直到end6 在职业生涯中,上算法课不要只记住一堆公式,必须要理解算法背原创 2017-03-19 04:14:13 · 3719 阅读 · 2 评论 -
算法竞赛入门经典(第二版)习题解答参考(第二章)
习题2-1 水仙花数#include #includeusing namespace std;int main(){ int a = 0,b = 0,c = 0; for(int i = 100;i<1000;i++) { a = i%10; b = i/10%10; c = i/100; if(原创 2016-11-14 03:20:00 · 1510 阅读 · 0 评论 -
动态规划
原创 2017-04-23 20:15:08 · 229 阅读 · 0 评论