自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 做题笔记之-----母函数的相关应用

前面说过母函数求递推式,今天要讲的母函数的作用是求组合数和排列数。母函数有指数形式和一般形式。这些东西网上都有大把资料。我就懒得写了。一般形式的母函数主要解决问题: 有 1 5  10 25 50  元的硬币,然后给你一个数字,问你用这几种硬币组合凑成数字大小的种类。很简单。种类个数就是系数,而这个数字就是x的次数。大多数都是这样的类型,换汤不换药。就举一个例子了。而这种方法唯一的难点是用

2012-08-08 20:55:46 559

原创 做题笔记之---多项式乘法

/// 本次计算的是f(x)=(1+x^1+x^2+x^3+········)*(1+x^2+x^4+x^6+·····)*(1+x^3+x^6····)*········#includeusing namespace std;#define N 30 //N表示有多少个多项式相乘#define M 51 //M表示只需要x的次数小于M的那些项int main(){ int F[

2012-08-08 09:32:03 910

原创 做题笔记之------母函数求递推式

前几天在杭电上做一个找字母的题目,才接触到母函数这个东西。一开始,我看别人解题报告,以为母函数仅仅就是求这类题目而已,当我去搜索母函数,然后发现了一篇文章,关于介绍母函数求解递推式,我顿时就欣喜若狂,虽然对于一些式子,我们仅仅知道递推式,就可以利用计算机算出我们所需要的那一项,但是,这样是会消耗很多时间和空间,我个人一直都在寻找一种能够将递推式转化为通项公式的方法,而母函数,正好达到了这一要求,母

2012-08-06 22:32:21 747

原创 关于相交线产生区域问题和错误排序

今天在杭电上做题目时碰到一题说求N条折线最多能分割多少个区域的问题。花了一个小时,把折线和直线的情况都推了一边,算是做个笔记吧直线情况  :  当一条直线时 ,有2个区域。两条直线,四个区域,此时有1个交点,三条直线要有3个交点才能产生最多区域。我们可以发现,每增加一条直线,交点数目增加 n-1个,n-1即为第n条直线与前N-1条直线都有交点。而n-1个交点会多增加N-2个区域,同

2012-07-31 20:22:56 554

原创 算法导论笔记之----双向链表

#includeusing namespace std;typedef int Element;struct Node{ Element Num; Node *parent; Node *next;};class Lnode{public: Lnode(); void creat(); bool find(Element);//判断某个元素是否在链表中 void

2012-07-26 16:43:50 365

原创 算法导论笔记之---合并排序应用之求逆序数

逆序数:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。这是百度百科里的定义。如  4 7 6 8 5 1 3 2 逆序数为20   在我所了解中求逆序数有两种思路:一种是求出数列a[n]中排列在a[i]前面比a[i]大的数的个数,然后将n个数求和即为逆序数。另一种是求出数列a[n]中排列在a[i]后面比a[i]小的数的个数,然后将N个数求和。

2012-07-24 13:35:34 442

原创 算法导论笔记之----随机快速排序

根据算法导论的描述,我们知道快排虽好,但是也有情况是O(n^2),这种情况下每次划分都是 n-1 和1个元素  此时还不如插入排序的效率。所以引进了随机快速排序。原理是在我们排序的范围,随机产生一个数,然后将该数对应的数组值与数组排序的第一个数字交换,然后再进行普通的快速排序。。#include#define random(x) (rand()%(x))using namespace std;

2012-07-24 09:45:47 446

原创 算法导论笔记之----堆排序

最大堆,父节点大于它的孩子节点的值。。。先采用递归的方法,建立一个最大堆,然后将堆的最高父节点与当前所保留的树最后一个节点交换,同时去掉最后一个节点,将剩余树从新建堆。。#includeusing namespace std;void Buildhead(int *arr,int parent,int longth){ int lagest; if(parent*2+1<=l

2012-07-24 09:08:38 372

原创 算法导论笔记之----合并排序

合并排序,思想很简单,先分再合,这种算法不仔细看,很容易以为是快速排序。实际上相差很大。合并排序,每次分,都是取中间的一个位置,然后用递归,将一组T个数据分成T组一个数据的数组,然后再合并起来。(都是根据数组的下标进行运算,所以从0开始)///合并排序#includeusing namespace std;void m_sort(int *arr,int begin,int middle,i

2012-07-24 08:55:35 387

原创 算法导论笔记之---插入排序

//插入排序#includeusing namespace std;void Insert(int *arr,int Count){ for(int i=1;i<Count;++i) { int Now=i; for(int j=i-1;j>-1;--j) if(arr[Now]<arr[j]) swap(arr[Now--],arr[j]); else

2012-07-24 08:39:42 297

原创 算法导论笔记之----二叉搜索树的插入、删除、搜索操作

#includeusing namespace std;struct tree{ int Key; tree *left; tree *right;};void SetNull(tree *&Root,int x);void Insert(tree *&Root,int x){ if(Root==NULL) { Root=new tree; Ro

2012-07-24 08:15:25 553

空空如也

空空如也

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

TA关注的人

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