随笔分类 - 递归
基础算法
摘要:一、递归的基本概念一个函数、概念或数学结构,如果在其定义或说明内部直接或间接地出现对其本身的引用,或者是为了描述问题的某一状态,必须要用至它的上一状态,而描述上一状态,又必须用到它的上一状态……这种用自己来定义自己的方法,称之为递归或递归定义。在程序设计中,函数直接或间接调用自己,就被称为递归调用。
阅读全文
摘要:P1036 [NOIP2002 普及组] 选数枚举每一种选数并进行素数的判断,计数。 //P1036 选数 #include<iostream> using namespace std; long long ans=0; int a[21]; int n,k; //判断素数 int isprime(
阅读全文
摘要:求有向图的强连通分量个数(kosaraju算法)1. 定义 连通分量:在无向图中,即为连通子图。 上图中,总共有四个连通分量。顶点A、B、C、D构成了一个连通分量,顶点E构成了一个连通分量,顶点F,G和H,I分别构成了两个连通分量。 强连通分量:有向图中,尽可能多的若干顶点组成的子图中,这些顶点都是
阅读全文
摘要:走楼梯问题题目:有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。比如,每次走1级台阶,一共走10步,这是其中一种走法。我们可以简写成 1,1,1,1,1,1,1,1,1,1。再比如,每次走2级台阶,一共走5步,这是另一种走法。我们可以简写
阅读全文
摘要:P3374 【模板】树状数组 1题解:线段树的单点更新,区间查询,注意线段树的结点个数是原数组的4倍 #include<iostream> #include<cstdio> using namespace std; long long s[2000100],a[501000],n,m,dx,dy;
阅读全文
摘要:普通线段树问题引入给定一个序列有n(n<=100000)个元素,有如下两个基本操作查询:给定区间[l..r],求这个区间所有元素的和修改:修改某个元素的值。任务:输出每个查询的值。任务数量m(m<=100000),只有上述两种操作。朴素算法一对于查询任务可以使用循环完成,时间复杂度O(n)。对于修改
阅读全文
摘要:排列的概念排列,一般地,从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(permutation)。特别地,当m=n时,这个排列被称作全排列(all permutation)。排列数p(n,r)=n!/(n-r)!,p(n,n)=n!,0!=1从
阅读全文
摘要:已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。例:如图二叉树的数据文件的数据格式如下: 输入 第一行n为二叉树的结点个树,n<=100;第二行x表示要查找的结点的值;以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。输出 一个数即
阅读全文
摘要:二叉树输出(btout)【问题描述】树的凹入表示法主要用于树的屏幕或打印输出,其表示的基本思想是兄弟间等长,一个结点要不小于其子结点的长度。二叉树也可以这样表示,假设叶结点的长度为1,一个非叶结点的长并等于它的左右子树的长度之和。一棵二叉树的一个结点用一个字母表示(无重复),输出时从根结点开始:每行
阅读全文
摘要:FBI树(fbi)【问题描述】我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。FBI树是一种二叉树[ 二叉树:二叉树是结点的有限集合,这个集合或为空集,或由一个根结点和两棵不相交的二叉树组成。这两棵不相交的二叉树分别称为这个
阅读全文
摘要:汉诺塔是计算机学教科书中常用的游戏,用来说明递归的魔力。该游戏有3个柱子和一组不同大小的圆盘,柱子从圆盘的中心穿过。游戏开始时,所有圆盘叠放在左侧第一个柱子上,如图 1 所示。 游戏的目标是将所有的圆盘从第一个柱子移动到第三个柱子,同时遵守以下规则: 1.除了被移动时,所有圆盘都必须放在柱子上。2.
阅读全文