logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Ackerman函数(阿克曼函数) 递归实现(C++)

文章目录一、什么是Ackerman函数(阿克曼函数)二、递归算法实现1. 设计递归方程2. 确定边界条件3. 编写程序代码4. 运行结果展示一、什么是Ackerman函数(阿克曼函数)定义:A(m,n)={n+1若m=0A(m−1,1)若m>0且n=0A(m−1,A(m,n−1))若m>0且n>0A(m,n)=\begin{cases}n+1 & 若m=0\\A(m-1,

#算法#c++
【递归】整数划分(C++)

文章目录一、什么是整数划分二、递归算法实现1. 设计递归方程2. 确定边界条件3. 编写程序代码4. 运行结果展示一、什么是整数划分所谓整数划分,是指把一个正整数n写成如下形式:n=m1+m2+⋅⋅⋅+min=m_1+m_2+···+m_in=m1​+m2​+⋅⋅⋅+mi​其中mim_imi​为正整数,并且1≤mi≤n1 \leq m_i \leq n1≤mi​≤n,则{m1,m2,⋅⋅⋅,mim

#算法#c++
【贪心算法】最小生成树(Prim算法 & Kruskal算法)(C++)

一、最小生成树问题1. 问题描述设G =(V,E)是无向连通带权图,即一个网络。(V是顶点集合,E是边集合)如果G的子图G’是一棵包含G的所有顶点的树,则称G’为G的生成树。生成树上各边权的总和称为该生成树的耗费。在G的所有生成树中,耗费最小的生成树称为G的最小生成树。2. 算法分析Prim算法和Kruskal算法:都是解最小生成树问题的贪心算法;它们做贪心选择的方式不同,但都利用了下面的最小生成

#算法#贪心算法#c++
【分治】循环赛日程表(C++)

文章目录一、循环赛日程表问题二、递归算法实现一、循环赛日程表问题设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:每个选手必须与其他n-1个选手各赛一次;每个选手一天只能参赛一次;循环赛在n-1天内结束。分析:按此要求,我们可以将比赛日程表设计成有n行和n-1列的一个表。在表中的第i行,第j列处填入第i个选手在第j天所遇到的选手。其中1≤i≤n,1≤j≤n-1。规划:二

#算法#c++
【递归】全排列(C++)

文章目录一、什么是全排列二、递归算法实现1. 设计递归方程2. 确定边界条件3. 编写程序代码4. 运行结果展示一、什么是全排列定义:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。全排列数:f(n)=n!f(n)=n!f(n)=n!二、递归算法实现1. 设计递归方程思考,假设我们对{1, 2, 3, 4

#算法#c++
【贪心算法】单源最短路径(Dijkstra算法)(C++)

一、单源最短路径问题1. 问题描述给定带权有向图G =(V,E),其中每条边的权是非负实数。给定V中的一个顶点,称为源。计算从源到所有其它各顶点的最短路长度。这里路的长度是指路径上各边权之和。2. 问题分析Dijkstra算法:是解单源最短路径问题的贪心算法。基本思想:一个顶点属于集合S,当且仅当从源到该顶点的最短路径长度已知。设置顶点集合S,并不断地作贪心选择来扩充这个集合。贪心策略:每次都从V

#算法#贪心算法#c++
到底了