基础算法
文章平均质量分 92
W_wjl1900
这个作者很懒,什么都没留下…
展开
-
动态规划之硬币问题
有若干币值为1元、3元、5元的硬币,问得到11块钱最少需要几枚硬币。咋一看,用一眼望穿法就可知道是3枚,但我们要用程序来实现它。 就像做证明题一样,我们将这个问题细分,从最简单的得到1元需要几枚硬币开始分析,很显然coinValue(1)=1,只需要拿一个1元硬币即可。(若从0元算起,则有coinValue(0) = 0),要得到2元,我们只有1元面值的硬币可选择,我们先拿一个1元的硬币,还剩下一原创 2016-09-30 01:19:51 · 366 阅读 · 0 评论 -
冒泡算法记录
冒泡算法:每一次比较前后两个元素,若arr[j] > arr[j+1],则将arr[j+1]的值赋给arr[j],否则继续向后比较。每一趟排序,都会将最大的排在后面,每排序一次,下一次的比较次数就少一次。贴代码,记录下using System; using System.Collections.Generic; using System.Linq; using System.Text; using原创 2016-09-27 23:48:31 · 297 阅读 · 0 评论 -
动态规划算法求解最大公共字符串
第一次写博客,为了激励自己努力。 前几天在牛客上看到一个算法题: 查找两个字符串的最大公共字符串长度。 自己是算法小白,学习了下动态规划的思想,写了个入门级的代码。 1.先用个例子简单梳理下分析过程,首先将字符串str1=“sdjhfdshklhfjk”和字符串str2 =“dffdshklu”以矩阵的形式排列(ps:后悔大学没好好学线代),然后按行从上到下,按列从左至右进行循环原创 2016-09-26 02:54:20 · 1039 阅读 · 0 评论 -
快速排序算法
快速排序算法:在待排序的序列arr首端和末端分别定义标志位i,j,默认取arr的第一个数字为参照数,并将值赋给临时变量temp,首先从末端j所处的位置开始查找,直到找到比temp小的数,则将arr[j]赋值给arr[i],并将i向后移动一位,即i++,然后从i开始向后查找,直到找到比temp大的数,则将arr[i]的值付给arr[j],同时将j向前移一位,即j–,直到i==j,将temp的值插入到a原创 2016-09-26 03:18:56 · 322 阅读 · 0 评论 -
动态规划之01背包问题
01背包问题描述:有N(N>=1)个物品,具有不同的重量和价值,另有一个容量为V的背包,求在重量不超过V的情况下,使得所装物品的价值最大。思路 首先找到动态规划中的状态,即f[i,j],i代表允许i个物品放入到背包中,j代表背包的容积,f[i,j]表示当允许i个物品放入到容积为j的背包中的时候的最大总价值。为什么这里说i代表的是允许i个物品可放入背包中呢?意思是,现在可供挑选的物品有i个,每个物品都原创 2016-10-02 04:15:25 · 464 阅读 · 3 评论 -
基础算法之选择排序
选择排序的思想,n个数据存在数组a[0]到a[n-1],然后一个一个排列。先考虑第一个数,存于a[0],需从a[0]到a[n-1]选择出最小的一个数,然后存放于a[0]处,然后考虑第二个数,从a[1]到a[n-1]中找到最小的数,存到a[1],…,直到第n-1个数。可以和冒泡排序的思想相比较,冒泡是通过相邻的两个数据比较,每次循环最终将最大的数排在了最后面,而选择排序是每次选择最小的数,然后排在最前原创 2016-10-08 00:43:15 · 361 阅读 · 0 评论 -
基础算法之希尔排序
希尔排序是对插入排序的一种改进,它是通过逐步缩小增量,对组内进行插入排序的一种算法。通俗理解就是把数组的下标按一定的增量分组,然后组内进行排序,排序完成后,缩小增量,那么组内元素会越来越多,分组则越来越少,直到增量为1,排序完成后为止。 组内排序的原则:将当前的数存在临时变量temp中,再将当前的数arr[i]与组内排在前面相邻的数arri-group进行比较,若大于则不处理,若小于,则把arr[原创 2016-11-02 23:30:35 · 298 阅读 · 0 评论