递归
MOLS自恒
这个作者很懒,什么都没留下…
展开
-
最大公因数和最小公倍数(递归)
可以作为模板直接使用#include <iostream>using namespace std;int gcd(int a,int b){ return b==0?a:gcd(b,a%b);} int lcd(int a,int b){ return a*b/gcd(b,a%b);}int main(){ cout<<gcd(3,10)<<endl; cout<<lcd(10,3)<<endl; return.原创 2020-05-31 10:20:27 · 365 阅读 · 0 评论 -
两个字符串是否相等(递归)
给定两个字符串,康康是否相等#include <iostream>#include <string>using namespace std;bool f(string s1,string s2){ if(s1.length()!=s2.length()) return false; if(s1.length()==0) return true; if(s1[0]!=s2[0]) return false; return f(s1.substr(1),s2..原创 2020-05-31 10:18:06 · 160 阅读 · 0 评论 -
求子集
给定一个数字,比如5,表示01234五个元素,求出对应的集合,并输出#include <iostream> #include <vector> #define MAXN 200using namespace std;typedef long long ll;vector< vector<char> > v;int f(int x,int n){ int ans=1; for(int i=1;i<=n;i++) { ans.原创 2020-05-31 10:15:17 · 222 阅读 · 0 评论 -
最长公共子序列(递归实现)
最长公共子序列(LCS)是一个在一个序列集合中(通常为两个序列)用来查找所有序列中最长子序列的问题。一个数列 ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则称为已知序列的最长公共子序列。直接看代码:#include <iostream>#include <cstring>using namespace std;int f(string s1,string s2){ if(s1.length()==0||s2.length()==0).原创 2020-05-31 10:12:53 · 2084 阅读 · 0 评论 -
全排列递归模板
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。举个栗子,ABC的全排列是ABC,ACB,BAC,BCA,CAB,CBA下面给出实现模板:#include <iostream>using namespace std; //k为基准下标,n为字符数组的长度void f(char a[],int k,int n){ if(k==n) { for(int i=0;i<n;i+.原创 2020-05-31 10:09:13 · 148 阅读 · 0 评论 -
汉诺塔问题
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。我们计算出移动方案,代码如下#include <iostream>using namespace std;void hanio(int n,char a,char b,char c){ .原创 2020-05-31 10:06:10 · 96 阅读 · 0 评论 -
N皇后问题(递归回溯)
在N*N的棋盘上放入N皇后,保证任意两个皇后不在同一行、同一列、同一对角线上,算出放皇后的方法由多少种大致画一个图,我们使用一个rec数组,下标表示行号,数值表示列号我们一行一行尝试,康康是否可以放在每一行的皇后可以放到对应的列上,遍历递归,dfs递归之后需要回溯。然后我们写一个检测函数,如果对应得rec的值是y,表明在同一列,匹配失败。然后我们观察棋盘图可以发现,我们的主对角线上横坐标和纵坐标相减结果一致。副对角线上横纵坐标相加结果一致。下面看代码#include <.原创 2020-05-31 10:03:27 · 400 阅读 · 0 评论 -
从零开始的递归生活(二)
上次我们了解了递归的基本操作,这次我们要玩一点稍微高端一点的了,还是老办法,我们用例子来引出递归的特性,让我们开始吧。问题:在n个球里面取出m个球,算出取球的方法又多少种?然后要求用递归解决问题。一个到这个问题我立刻想到高中时学的排列组合Cn(m),这样一个数学公式不就搞定了吗?不过我们要用递归解决,这怎么解???你这是在为难我胖虎.jpg,不慌看我操作。我们想象出一个“球王”,就是一个特殊球,我们来分析一下:先定一个模子://n个球里面取出m个int f(int n,int m){原创 2020-05-25 20:41:49 · 243 阅读 · 0 评论 -
从零开始的递归生活(一)
递归一直就是老大难的东西,不过每一个学编程的人都绕不开它,下面我们就通过一系列案例来学习一下怎么使用递归这种思想。光说原理太没意思,我们通过一个问题来看看递归的原理,非常简单打印1到100的和,这个问题太简单了一共循环不久搞定了嘛,比如这样int ADD(){ int ans=0; for(int i=1;i<=100;i++) ans+=i; return ans;...原创 2020-05-06 17:22:11 · 229 阅读 · 0 评论