算法复习
爱篮球爱IT
这个作者很懒,什么都没留下…
展开
-
递归和分治——整数划分问题
q(n,m)表示最大加数不大于m的划分个数。(1)q(n,1)=1,n>=1(2)q(n,m)=q(n,n),m>=n(3)q(n,n)=q(n,n-1)+1。正整数n的划分有n1=n的划分和n1(4)q(n,m)=q(n,m-1)+q(n-m,m),n>m>1。正整数n的最大加数n1不大于m的划分由n1=m的划分和n1其中正整数的划分=q(n,n)递归:#includ原创 2017-10-23 21:02:25 · 1458 阅读 · 0 评论 -
递归与分治——排列问题
#include #include #include #include using namespace std;void swap(int a[],int i,int j){ int t=a[i]; a[i]=a[j]; a[j]=t;}void perm(int a[],int k,int m){ if(k==m) { f原创 2017-10-23 21:21:35 · 348 阅读 · 0 评论 -
递归与分治——汉若塔问题
移动规则:(1)每次只能移动1个圆盘;(2)任何时刻都不允许将较大的圆盘压在较小的圆盘之上;(3)在满足1,2的前提下,可将圆盘移到a,b,c中的任意一塔座上。#include #include #include #include using namespace std;void move(char a,char b){ printf("%c->%c\n",原创 2017-10-23 23:13:56 · 349 阅读 · 0 评论