自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笨牛dashan的专栏

我羡慕,但是不崇拜大牛,因为不久的将来,我们将平起平坐。。

  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 java学习心得

<br />2个月了,以前写博客的习惯也没有了,这段时间,看了本图论导引,看了半本形式语言,回过头来,感觉东西是如此抽象,以至于我现在回忆都不知道学习到了什么,只是简单的知道些概念,至于我的acm,也基本是学习什么做什么题了,不像以前那样盲目的,来一个做一个了。。不过还好,最近一个北邮的师兄找做项目,所以开始学习了java语言,感觉这个语言开始时那么那么的bt,但是这几天过去了,慢慢的走进来了,所以也就是多少熟悉点了,坚持吧,今天没什么可说的,只是感觉东西好久没有更新了,所以谈谈。<br /> <br />

2010-12-21 17:29:00 284

原创 大数相乘

关于大数相乘同样在5月份的时候写过相关的代码,今天拿出来重新晒晒,大数相乘问题注意的一点就是进位的问题,还有我们需要的是不断的模拟,在纸上画画小的时候我们是怎么来算两个数相乘的,然后根据自己的思路就可以写出自己想要实现的部分了,好了,我还是直接写相关的代码吧,事先声明,本人的代码可能运算的时间效率比较低,我看过别人用傅里叶来做的,我明天再进行相关的更新,因为那些我还没有看,先奉上今天的代码。C语言: Codee#14295#include #include #include usingnamespacest

2010-10-11 22:09:00 374

原创 大数相加的问题

<br /> <br />大数相加的问题我是今年的5月份的时候曾经写过相关的代码,但是今天用到的时候却编译怎么也通不过去,后来发现在初始化的时候发现了错误,不过整体而言,大数相加是大数运算中应该是最简单的一种了吧。只需注意进位即可,还有就是用字符串来处理(估计是废话,因为谁都知道),那么我们需要注意的又是什么呢,当然,注意的就是细节问题,首先我们应该对输入的字符进行倒置,为什么这样做,想想小学时你是怎么运算的就应该知道了,还有就是进位,这两个应该是关键的两点,剩下的就是输出,想想输出应该怎么输出,需要注意下

2010-10-11 21:03:00 400

原创 单纯型算法

<br />作为解决线性规划的一个十分有效的算法,单纯型算法是最古老的一种方法,但是也是比较实用的一种方法,运行时间最高可能达到指数级。关于单纯型算法,我觉得注意的其中一点就是要将线性规划转换成松弛型的增广矩阵的形式,做好基本的准备后,那么注意的就是主元换取的问题了,而主元换取我们强调的也是一个比较容易混淆的就是系数的问题,我们要想使最后的解达到我们所需要的,我们将不断的换取主元,不断的改变系数,直至目标函数中的基本变量的系数全部为负数的时候,那么程序也就运行结束,那么可能你就会问了,此时的最优解是多少呢,

2010-10-09 20:19:00 1180

原创 9月份---我的实际

<br />很久没写过日志了。最近的博客也一直没有更新。8月份的暑假集训已经告一段落,总之成果还是多少有点,虽然效率不是太高,但是一个月的时间还是认识了几个大牛,然后结交了几个朋友。不过8月份的集训还是多少有点收获的,肯定是比自己在家的效率要强多了。。唯一遗憾的是,由于数学建模中间出了点差错,自己准备了挺长时间,但是最终我们却没有参加,所以挺遗憾的,但是好在我们还有时间,大二后半年吧,因为毕竟那时才是我们真正发挥的时候。<br /> <br />9月份吧,自己本打算不参加这届的ACM比赛了,因为毕竟自己准备

2010-10-05 18:50:00 259

原创 算法之----二项堆

<br />二项堆是依赖于二项树而实现的,对于二项树,算法导论上讲解的很清楚,在此不再一一说明,首先还是说几个比较重要的概念。<br />什么是度:<br /><br />注意。结点的度取决于T是有根树还是自由树。自由树中结点的度跟无向图一样,是相邻定点的个数<br />。而在有根树中,度指结点孩子的个数,结点的双亲不包括在内。。<br /> <br />有根树:一颗自由树,它有一个与其他不同的结点。这个特殊的顶点称为树的根,我们通常称<br />有根树的定点为结点。<br /> <br />根是树中唯一没

2010-09-04 16:24:00 532

原创 贪心随记

<br />动态规划是解决贪心算法的基础,而贪心算法更好的减少了运行的时间。<br />开发贪心算法的步骤:<br />1)解决问题的最优子结构<br />2)设计出一个递归解<br />3)证明在递归的任一个阶段,最优选择总是贪心选择。那么做贪心选择总是安全的。<br />4)证明通过贪心选择,所有子问题(除一个以外)都是空。<br />5)设计出一个实现贪心策略的递归算法<br />6)将递归算法转换成迭代的算法<br /><br />而实际过程中我们经常简化这个步骤。通常直接做出贪心选择来构造子结构,

2010-08-23 21:25:00 243

原创 最长公共子序列

<br />前段时间我写过最长递增子序列,我们用到的是动态规划的思想,今天谈的最长公共子序列仍然是动态规划的一个十分重要的一部分。结合算法导论的讲解,谈谈我自己的理解。求解的关键是描述的过程,先引进一个定理:<br />(lcs最优子结构)设x=(x1,x2,……,xm)和y=(y1,y2,……,yn)为两个序列,并设z=(z1,z2……,zk)为x和y的任意一个lcs.<br />1)如果xm=yn,那么zk=xm=yn而且zk-1是xm-1和yn-1的一个lcs;<br />2)如果xm!=yn,那么z

2010-08-22 10:19:00 254

原创 动态规划随记1

<br />动态规划和分治法一样,通过组合子问题的解,而解决整个问题的解。。<br /><br />动态规划重复求解公共的子问题。<br /><br />动态规划对每个子问题之求解一次,将其结果保存在一张表中,从而避免每次遇到各个问题时<br />重新计算答案。<br /><br />动该规划的算法:<br />1,描述最优解结构<br />2,递归定义最优解的值<br />3,按自底向上的方式计算最优解的值<br />4,由构造出的结果构造一个最优解<br />步骤一,最优子结构:<br />一个问题的最

2010-08-21 20:29:00 224

原创 二叉查找树

<br />对于二叉查找树的知识,我感觉主要是自己对算法的理解上,事先声明,由于本人一时犯糊涂,一不小心将左右的英文记反了,给你们的读代码带来很大的不便,因为是很早以前就是已经接触了二叉树,只是今天看代码的时候看到了后继啥的,所以索性就拿过来写写,不过和以前不一样的是,这个代码时双向的,也就是类似与双向的链表,所以,我觉得这个还是有点价值的,仅此参考,关于二叉树的建立,我们也可以用到递归,可以大大减少代码的量,同时查找的前继后继等本代码都没有写,同时因为代码是自己写的,难免有很多不值得推广的地方,所以,还是

2010-08-20 16:35:00 229

转载 时间复杂度和空间复杂度

【摘】时间复杂度和空间复杂度2007-09-16 13:431、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化

2010-08-19 17:39:00 246

原创 以期望的线性时间做选择---求最小最大元素

<br />以线性时间求最小最大元素的选择问题的时间是线性的。下边的这个方法我们用到的是二分制的方法,它和前边我提到的快速排序的思想是差不多的,但是不同的是,此算法的思想虽然也是递归,但是我们只处理一半。。从而减少了我们所需要的时间。。关于代码,我还是直接贴出来了,希望可以深入体会。。C语言: Codee#12936//题目:寻找第几小元素 <br />//by 笨牛dashan<br />//完成时间: 2010.8待修改已完成。 <br />#include <stdio.h><br />#define

2010-08-18 17:46:00 778 1

原创 桶排序

<br />关于桶排序,我们书上提到的是用线性表来做,对于这个算法,可以很好的提高算法的运行时间,使其能达到线性时间。对于代码的实现部分,依然用到了计数排序的方法,定义一个结构体数组用于存储分类的数组。好了,我还是直接把实现的代码贴出来吧,代码有点问题,我会在这几天尽量改正,但思路肯定是没有问题的,看这个代码请尽量注重看思路。。<br /> C语言: Codee#12929//题目:桶排序 <br />//by 笨牛dashan<br />//完成时间: 2010.8<br />//完成状况:待修改。 <b

2010-08-18 16:31:00 266

原创 基数排序

<br />本来应该是上午应该更新的。。但是我们的csdn太忙,登录半天就是登录不上,所以,直到现在才更新。。闲话少说,还是正事为主。。<br />基数排序是古老打表的一种,是桶排序的特殊情况,在基数排序中,我们用到了计数排序的相关的知识,那么还是先说一下基数排序的大体思路,按我的理解,就是排序就是从个位数依次至最高位,根据各个位数上的大小不同分别排序,直至根据最高位上的各个数字的不同排序后,就是我们所得到的排序好的顺序,算法的重要性是按位排序要稳定,关于按位排序我们可以利用字符串的二维数组,或者采用我下边

2010-08-18 15:08:00 257

原创 计数排序

<br />计数排序的基本思想史对每个输入x,确定出小于x的元素的个数。有了这一信息我们就可以把x直接放在他的最终输出的数组上,关于这个算法,我们定义了3个数组,一个是原数组,一个是存储数组,一个则是临时数组,计数排序没有什么深奥的,重要的是理解,现将代码贴出来,欢迎各路大牛拍砖。。C语言: Codee#12914#include <stdio.h><br />#include <string.h><br />#define MAX 100<br />int n;<br />voidcounting_sor

2010-08-17 21:55:00 234

原创 stooage排序

<br />对于这个排序的算法。我真的解释不清楚,看着伪代码将代码敲出来了。并且能很好的实现排序过程,仔细想想自己好像明白是怎么回事,但是不知道怎么来表达出来,我还是先把我写的代码贴出来,争取大家一起理解理解,我也在看看这个代码。。争取过段时间有个满意的答复。。C语言: Codee#12907#include <stdio.h ><br />#include<stdlib.h><br />voidstooge_sort(int*a,inti,intj)<br />{<br />    inttemp;<br

2010-08-17 20:08:00 251

原创 快速排序

关于快速排序同样用到了我前边提到的那个二分法,我理解的快速排序的关键是将一个数组分为3部分,我们标记的元素作为单独的数组,里边只有一个元素,大于或者等于这个元素的数组作为另一部分,而小于这个元素的部分作为剩下的一部分,那么实现的关键就是不断的二分,直至只剩下1个元素的时候终止,然后回溯,利用递归,从而找到我们需要的部分,那么实现的关键是什么,当然是数组的如何划分部分,如何将数组化为3部分,这个则是快速排序的精华部分,同样,还是直接代码。。。C语言: Codee#12906#include intpartit

2010-08-17 19:07:00 222

原创 快速排序

<br />关于快速排序同样用到了我前边提到的那个二分法,我理解的快速排序的关键是将一个数组分为3部分,我们标记的元素作为单独的数组,里边只有一个元素,大于或者等于这个元素的数组作为另一部分,而小于这个元素的部分作为剩下的一部分,那么实现的关键就是不断的二分,直至只剩下1个元素的时候终止,然后回溯,利用递归,从而找到我们需要的部分,那么实现的关键是什么,当然是数组的如何划分部分,如何将数组化为3部分,这个则是快速排序的精华部分,同样,还是直接代码。。。C语言: Codee#12906#include <st

2010-08-17 19:06:00 239

原创 堆的排序

<br />关于堆的排序,主要是建堆与堆的保持的关系,对于建堆,我们是从下向上依次建立,而对于堆的保持则是从上向下进行,实现的关键仍然是递归,而对于最后的排序过程,只是将堆的最后一个元素取出,然后在进行保持,直至我们所需要的堆的元素只剩下一个的时候,程序结束,对于堆的排序仍然是可以最大也可以按小依次,而最小的我们将在后边的优先级队列中用到,下边还是代码,自己照着伪代码敲出来的,与我以前写的不一样,但是整体思想还是没有发生任何的变化,希望仔细体会。。。C语言: Codee#12905#include <std

2010-08-17 17:33:00 200

原创 堆的排序

<br />关于堆的排序,主要是建堆与堆的保持的关系,对于建堆,我们是从下向上依次建立,而对于堆的保持则是从上向下进行,实现的关键仍然是递归,而对于最后的排序过程,只是将堆的最后一个元素取出,然后在进行保持,直至我们所需要的堆的元素只剩下一个的时候,程序结束,对于堆的排序仍然是可以最大也可以按小依次,而最小的我们将在后边的优先级队列中用到,下边还是代码,自己照着伪代码敲出来的,与我以前写的不一样,但是整体思想还是没有发生任何的变化,希望仔细体会。。。C语言: Codee#12905#include <std

2010-08-17 17:32:00 211

原创 堆的排序

<br />关于堆的排序,主要是建堆与堆的保持的关系,对于建堆,我们是从下向上依次建立,而对于堆的保持则是从上向下进行,实现的关键仍然是递归,而对于最后的排序过程,只是将堆的最后一个元素取出,然后在进行保持,直至我们所需要的堆的元素只剩下一个的时候,程序结束,对于堆的排序仍然是可以最大也可以按小依次,而最小的我们将在后边的优先级队列中用到,下边还是代码,自己照着伪代码敲出来的,与我以前写的不一样,但是整体思想还是没有发生任何的变化,希望仔细体会。。。C语言: Codee#12905#include <std

2010-08-17 17:30:00 166

原创 排序-----二分治

<br />关于二分治的排序,我们用到的是递归思想,直至数组只含有一个元素的时候,再利用合并的思想,根据预先设计好的排列方式进行代码的优化过程。对于合并的过程,首先应该计算数组被分开两端的分别长度,然后再定义两个数组,分别用于存储前后两个部分的元素,对于元素的进入,要进行所谓的正确方法,书上定义了一个末值标记点,但是我认为这是没有必要的,因为我们只需找到最后一个元素即可,然后将剩余的直接拿下来。。总之二分制的思想无非就是分和合,什么时候分,以及怎样去分这是关键,闲话少说,还是直接上代码吧;C语言: Code

2010-08-17 16:29:00 301

原创 lp---对偶问题

关于对偶问题,在以前学过的网络流体现的比较清晰。我们求网络流的最大问题,我们可以求图的分割的最小容量。这就是一个十分明显的对偶问题,求最大转化为求割得最小,而对于lp问题,我们幸运的发现,所有的lp问题都可以转化为求对偶问题,而只是涉及相关的转化。针对对偶问题,我想说的是,对偶问题的最小解则是原问题的最大解,所有一定要记住这个关系,而对偶问题力求使我们所要解答的解最简化。。下面的是我在网上找到的一些相关的资料,讲解的很有道理,并且附有图解。。1.1 对偶问题的提出在第一章中我们研究过一个生产计划问题,其数学

2010-08-16 09:44:00 3582 1

原创 动态规划之----求最长递增子序列

<br />采用动态的规划思想。利用动态规划的分层,以及对问题子集解的记住,从而采用动归的思想。。伪代码实现的关键步骤是<br />for j=1,2,……n;<br />  l[j]=1+max(l[i]:(i,j)属于E)<br />return maxl[j];<br />对于dag图,我们有对于i<j,等增子序列有l[i]<l[j];所以,也就是利用归约的思想变成了寻找dag图的最长路径;<br />代码<br />memset(b,1,sizeof(b));<br /> for(i=0;i<n;i

2010-08-15 22:00:00 354

原创 动态规划应用之--矩阵的链式相乘

<br />矩阵的链式相乘。。利用动归思想。将过程分为很多个子过程。从这些个子过程中找到最优解。对于两个矩阵的行列为m,n,l的。我们知道代价为m*n*l;我下边的代码充分体现了这个思想。并且附有关键步骤的详细解释。应用这个过程的关键是找到开始点,结束点,以及区间长度的应用。如果不懂还是仔细理解注释部分。C++语言: Codee#12822#include <iostream><br />#include <string><br />usingnamespacestd;<br /><br />#define

2010-08-14 19:39:00 446

原创 完全背包问题

<br />参考百度文科:题目<br />有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路<br />这个问题非常类似于01背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很多种。如果仍然按照解01背包时的思路,令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值。仍然可以按照

2010-08-13 17:52:00 174

原创 0/1背包问题

<br />我是看别人的博客明白的。。讲解的很好。。他的博客链接下:http://www.cublog.cn/u2/62281/showart_488401.html<br />0/1背包问题动态规划详解 :<br /> <br />#include <stdio.h><br />#define max 100<br />int a[max][max];<br />int p[max],w[max];<br />int m,n;<br />int dp()<br />{<br /> int i,j;<br

2010-08-13 08:53:00 225

原创 二分图匹配应用。。poj3041

对于二分配有很多的应用。。比如相亲问题,配对问题等等。。今天做的poj 3041就是一个非常典型的例子,因为自己开的空间较小(不符合题意),导致我调试了2个多小时,所以请大家尽量不要重蹈我的覆辙,一定要看清题在做。。题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=3041奉上代码。。只是我上篇博客的文章稍加修改:C++语言: Codee#12552//****************************************************/

2010-08-04 17:15:00 275

原创 关于二分图的匹配问题

二分图的匹配问题:只写相关的简单的代码。。实践的关键是深度优先搜索。当然广度同样是可以的,对于搜索的问题,要注意临界的条件问题。。我说一下我理解的二分图的匹配问题。。关于最大匹配,需要掌握的是hall定理,和匈牙利的算法相关的知识,这两个掌握之后,那么就可以简单的写出相关程序了。代码奉上,只是说明个人的思路,不是针对某一个题,对于题来说还是需要有很大的改进的地方的。。C语言: Codee#12527#include #includeint n,m,matched[100];boolvisited[100],

2010-08-03 19:24:00 319

原创 纠结的poj1573.。。

这个题写出来没用太多时间。。但是不知道怎么回事。。总是出现错误。。希望有时间的朋友们帮忙看看。。题目大意以及思路我写的很清楚。。http://acm.pku.edu.cn/JudgeOnline/problem?id=1573原题。。 C语言: Codee#12514//北京大学ACM  poj1573//2010年8月3日//题目大意:一个机器人在一个格子中行走。。可能有两种情况:机器人行走N个指令出去。。情况2:先行走N个指令。。然后在行走M个指令,,也就是转圈//并且不会停下来了。。问题:输出的是哪一

2010-08-03 15:07:00 194

原创 考试了,把编程放下

<br />整整4天没有碰程序了,4天了,不对,今天是第五天,我还有3天考完试,这段时间得忙着应付考试,争取不挂科,这是目标了,呵呵,这段时间我的程序暂且放下了,放下了……

2010-07-03 19:23:00 199

原创 算法之……二叉树的查找

由于自己的一时糊涂,将英语单词left和right弄反了,给你们的阅读带来很多不便,所以还是尽情谅解,由于是个人的代码,新手,所以有很多肯能你们认为不对的地方,还是请大家多提意见!!C语言: Codee#11760#include #include #define MAX_1 10structnode{    intweight;    int*parent;    int*left;    int*right;};typedefstructnodeGraph;typedefGraph*Edge;EdgeC

2010-06-24 22:06:00 245

原创 图论之--广度与深度优先算法

 写新文章 <br />广度优先算法实现的关键是队列与标记的问题,这个是用队列来实现的,在图的方面是用链表来完成的,闲话还是少说,直接代码:(该代码有两部分,一个是深度的算法,一个是广度的算法,同时我觉得建图是这个代码的优点所在)C语言: Codee#11609#include <stdio.h><br />#include <malloc.h><br />#define Vertexnum 10<br />#define queuemax 10<br />intvisited[Vertexnum]={0}

2010-06-21 16:41:00 307

原创 关于哈弗曼树的问题

<br />因为要考试了,所以我的编程也要放放了,不过每天还要多少看点,这连着今天搞的哈弗曼树今天终于能用代码实现了,不过又是参考别人的代码,然后自己写的,不是自己的,不过自己已经理解是怎么回事了,首先,还是说说我对哈弗曼树的一些看法吧:<br />哈弗曼树我现在所会的只是建立和编码,至于解码,到现在为止不会,不过,我还是想分享一下我自己对这两面的理解,首先,对于树的建立,要涉及到选取结点的问题,一,选择两个未选的两个权值最小的结点,这个涉及到一个函数的问题,至于,怎么来写,我想还是自己仔细想想,这个并不难

2010-06-21 16:38:00 270

原创 ACM

2010-06-19 10:03:00 279

原创 我认知的acm

ACM希望你们能给迷茫的我指明一条道路,谢谢了……

2010-06-18 19:00:00 255

原创 哈弗曼函数……没有解决

今天接触哈弗曼函数,对于一些代码自己实现还是比较困难的,算法思想还是很简单的,但是一些相关的代码实现自己仍不能实现,所以,比较纠结!!弄了一天还是出不来,所以,还是自己想想办法,看看网上的了,不过看到一些关于文件存储的方式,感觉好像没这个必要,我再研究研究,争取明天更新博客的时候,将代码奉上!!

2010-06-16 16:48:00 257

htmlparser包

htmlparser包,用于java编程过程中html解析库的使用。。

2010-12-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除