算法分析与设计
CAI_Ambassador
快乐代码,改变世界
展开
-
最大字段和问题详解
最大字段和求解 思路分析 代码实现 /*简单算法*/ int maxsize(int n,int *a,int& besti,int& bestj) { int sum=0,i,j,k; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { int thissu...原创 2020-05-06 09:20:19 · 1350 阅读 · 0 评论 -
最长公共子序列详解
最长公共子序列 思路分析 1.最优子结构:两个序列的最长公共子序列包含了这两个序列的前缀的最长公共子序列 2.重叠子问题:有些子问题需要被重复计算 比如 c[i][j]=c[i-1][j]=c[i-1][j-1] c[i][j]=c[i-1][j-1]+1 c[i][j]=c[i][j-1]=c[i-1][j-1] 3.子问题的递归结构 c[i][j]=0 ...原创 2020-05-03 12:56:34 · 688 阅读 · 0 评论 -
快速排序详解
快速排序 快速对数字序列进行排列,内置partition函数进行划分 思路分析 1.分解 本文是以第一个元素为基准元素,不对称性较大 若采用随机数找基准元素,期望划分比较对称 2.递归求解 3.合并 详细思路见代码 代码实现 /*快排框架*/ template <class Type> void quicksort(Type a[],int p,int r) { if(p&l...原创 2020-04-26 16:21:19 · 220 阅读 · 0 评论 -
合并排序详解
合并排序算法 思路分析 代码实现 template <class Type> void mergesort(Type a[],int left,int right) { if(left<right) { int i=(left+right)/2; mergesort(a,left,i); mergesort(a,i+1,rig...原创 2020-04-26 15:24:38 · 439 阅读 · 0 评论 -
棋盘覆盖问题详解
棋盘覆盖问题 每个棋盘里面有一个特殊方格,用L型的骨牌覆盖棋盘上除特殊方格的部分。 思路分析 代码实现 void ChessBoard(int tr,int tc,int dr,int dc,int size) /*tr,tc左上角行号列号 dr,dc特殊方格行号列号 size为边长*/ { if(size==1) return; int tile...原创 2020-04-25 19:43:47 · 1606 阅读 · 0 评论 -
二分搜索技术详解
二分搜索技术 二分搜索技术充分利用了元素间的次序关系,采用分治策略,可在最坏情况下用O(logn)时间完成搜索任务。 代码实现 template <class Type> int BinarySearch(Type a[],const Type& x,int n) { } ...原创 2020-04-24 15:39:22 · 1627 阅读 · 0 评论 -
整数划分问题详解
整数划分问题题目描述思路分析代码实现 大家好,这是我的第一篇博客。先做一下自我介绍吧,我是河北大学的一名软件工程本科生,目前大二在读。我对编程没什么基础,就是想通过写博客的方式让自己记录一些日常学习,并和他人进行思路讨论,达到能快速提升自己编程能力的目的。欢迎大家来此讨论,小白们可以互相支持鼓励啊! 题目描述 将正整数n表示成一系列正整数之和 正整数n的不同的划分个数成为正整数n的划分数,记为p(...原创 2020-04-24 12:38:51 · 2170 阅读 · 0 评论