![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
递归
不想WA
记录我的学习笔记呀
展开
-
Dinic算法解最大流问题
Dinic算法解最大流问题具体的最大流的定义及原理可以参见这位朋友的博客(简单易懂)最大流问题详解(侵删)Dinic算法的基本原理利用BFS对图进行分层处理,接着使用DFS从S开始,每次层次加一寻找下一个点,直至达到汇点T,然后再回溯回去,以此遍历所有的增广路径,这样就可以满足我们同时求出多条增广路的需求,效率更高因此可给出Dinic算法的进行框架①在残量网络上通过BFS求出结点的层次,构造分成图。②在分层图上通过DFS寻找增广路,在回溯时同时更新边权。更加具体的原理可以参见这位朋友的博客原创 2020-11-27 09:46:11 · 348 阅读 · 0 评论 -
快速排序
基本思想快排的基本思想是分治,将数组A[p…r]划分为两个(可能为空)子数组A[p…q-1]和A[q+1…r],使得A[p…q-1]中的每个元素都小于等于A[q],而A[q]也小于等于A[q+1…r]中的每个元素,其中,计算下标q也是划分过程的一部分。大体过程通过上述的基本思想,写出大体代码如下void quicksort(int A[], int p, int r){ if(p >= r) return; else{ q = partition原创 2020-10-15 23:42:07 · 65 阅读 · 0 评论 -
堆排序
堆排序堆的介绍堆是一个数组,它可以被看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素。同时,除了最底层外,该树是完全充满的,而且是从左向右填充最大堆与最小堆二叉堆分为两种,即最大堆与最小堆。在最大堆中,最大堆性质是指除了根以外的所有结点i都要满足:A[PARENT(i)] >= A[i],即除根结点外的每个结点都大于或等于其子结点,下图则为一个最大堆。(图源自《算法导论》)而最小堆则与之相反。最大堆的维护维护最大堆,即判断某个结点是否符合最大堆的性质,如若不符合,通过将其与原创 2020-10-15 18:24:57 · 972 阅读 · 0 评论 -
求最大子数组问题
问题描述假定你获得了投资挥发性化学公司的机会。与其他公司一样,该公司的股票价格是不稳定的。你被准许可以在某个时刻买进一股该公司的股票,并在之后的某个时期将其卖出。你可以了解股票将来的价格,使得自己的利益最大化。你的任务是根据每天的股票价格,求得最大的收益。输入一个整数n,表示天数接下来一行,n个整数,用空格隔开,表示每天的股价。输出一个整数,表示最大收益。问题分析这类问题就是典型的最大子数组问题,可以通过将后一天的股票值减去前一天的股票值,即可得到这两天买入售出所盈利(亏损)的值。接着原创 2020-10-11 11:52:26 · 135 阅读 · 0 评论 -
利用c语言递归计算n阶行列式 并利用行列式求矩阵的伴随矩阵与逆矩阵
利用c语言递归计算n阶行列式问题:输入一个数字n,再输入一个n阶行列式,且每一项都是整数,得到行列式的值首先,计算行列式的值,先想到利用行列式的展开原理使它的阶次慢慢减少,从而很容易想到使用递归,那么如何用递归实现?话不多说,直接上代码(这里设只算10阶)小白在学长帮助下所写,欢迎大佬给出指导性意见#include<stdio.h>#include<math.h>...原创 2019-11-16 12:18:30 · 3116 阅读 · 2 评论