- 博客(4)
- 收藏
- 关注
转载 DFS(一):砌墙问题
问题描述使用两种砖头砌墙,砖头A宽为2,高为1,砖头B宽为3,高为1,用这两种砖头砌一面宽为W,高为H的墙。为了使墙牢固性高,要求每种砖只能横向摆放,不能竖起来,且除了两侧以外,不能出现上下对齐的砖缝,请参考下图: 上图允许上图不允许下图展示了宽为13,高为5的墙的一种砌法对于给定的宽度W,高度H,请问有多少种砌法?解决方案...
2019-09-16 15:40:00 347
转载 线性排序总结(c++实现)
前面介绍了一些常用的比较排序算法,它们都是通过比较两个元素的大小进行排序,归并排序和堆排序在最坏情况下的复杂度为O(nlgn),可以证明(使用决策树模型),通过比较进行排序,算法的下界为O(nlgn),因此,归并排序和堆排序是渐进最优的算法,快速排序在平均情况也可达到该下界。不过,对于一些特殊的输入元素,可以在线性时间完成排序,常见的算法有计数排序、基数排序、桶排序。计数排序...
2019-09-05 15:15:00 211
转载 排序算法合集(C++实现)
摘要排序操作在程序设计中是非常基础和常见的,也是算法的基础部分,我对几种常见的比较排序算法进行了整理。暴力排序(violence sort)思想:遍历数组,每次遍历都在未排序的部分找到最小元素的下标,在此次遍历结束后将最小元素放到遍历开始的位置。性能:时间复杂度为O(n2),算法比较次数与初始序列状态无关,性能在所有排序算法中最差。void Violence...
2019-09-02 16:59:00 155
转载 最大子数组问题
问题分析:在一个长为n的数组A[1..n]中,找到这样的i、j,使A[i...j]中元素的和最大,称A[i...j]为最大子数组。算法一(分治思想):数组A[low...high]的最大子数组必然满足三种情况:1)子数组在A[low...mid]中;2)子数组在A[mid+1,high]中;3)子数组跨越中点mid。因此可以使用递归分治方法计算find_max(A...
2019-08-19 19:13:00 170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人