![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法笔记
我已经怒不可遏了!
你觉得我会勤快到写简介?
展开
-
random_shuffle();随机分配函数和数的运用
random_shuffle()函数 这是c++库内的随机分配函数,将起始地址到末端地址的前一个地址之间的数随机存。 具体使用这里给一个网址函数教程 一个数的运用 如果是数组,从0开始的数组,想弄成循环数组计算,可以使用(i+j)%n(注:n是这个数组的长度j是要加的数,i是现在的位置) ...原创 2021-06-07 21:29:53 · 457 阅读 · 0 评论 -
二叉树的非递归调用
前序遍历 将左边孩子全放进栈并输出,遇到空的就访问栈的头节点的右孩子(如此往复直到找到有右孩子的节点。) 代码如下: void presq(bitree s) { stack<bitree> t; bitree v; bitree k; v = s; while (v||!t.empty()) { if (v) { cout << v->e; t.push(v); v = v->l; } else { v = t.top(.原创 2021-06-06 20:03:46 · 123 阅读 · 0 评论 -
全排列(超简单递归)
将n个数进行全排列 话不多说,直接给代码: #include<iostream> #include<string> #include<algorithm> #include<string.h> #include<stdio.h> #define bug(a) (cout<<"*"<<a<<endl) #define bugg(a,b) (cout<<"*"<<a<<' '.原创 2021-05-30 21:31:19 · 119 阅读 · 0 评论 -
赫夫曼树(最优二叉树)
哈夫曼树介绍 概念 哈夫曼树是最优二叉树的别名,他通过每个叶子节点算权值和,取最小权值和的那棵树便是哈夫曼树。 如何实现 将所有数排成一个数组内,找到其质量(他的价值)最小的两个,将其合成一颗树,左边是最小的,右边是第二小的,然后将其质量相加便是这颗新树的质量。然后再次搜索,找到质量最小的两个,一直往复直到只剩下一棵树,那便是哈夫曼树。 代码如下: #include<iostream> #include<iomanip>//这是输出格式的头文件 #define bug(a) (.原创 2021-05-25 14:18:25 · 212 阅读 · 0 评论 -
二分查找
二分查找 题目列表铺公路伐木工方程组求解 二分就是求一个区间的值,通过二分来使他更快的找到,取左右两边的数,使满足条件后令其中值等于左值(右值)(具体看情况)然后当满足条件(l+1<r)时跳出(有特殊情况是在l<r时跳出,如:l=m+1时,因为值在增加,所以不用l+1<r)。 题目如下: 铺公路 B市和T市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最大距离.原创 2021-05-23 20:06:15 · 184 阅读 · 0 评论 -
dfs入门题
地板迷宫 题目 蒜厂有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。 请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入格式 第一行是两个整数 W 和 H ,分别表示 x 方向和 y 方向瓷砖的数量。 W 和 H 都不超过 20 。 在接下来的 H 行中,每行包括 W 个字符。每个字符表示一块瓷砖的颜色,规则如下 1)’.’:黑色的瓷砖; 2)’#’:白色的瓷砖; 3)’@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中.原创 2021-05-16 21:11:45 · 147 阅读 · 0 评论 -
map函数的简单迭代器
题目 夏天来了 Joe经营着一个不大的水果店.他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样Joe就可以很容易掌握所有水果的销售情况了. Input 第一行正整数N(0<N<=10)表示有N组测试数据. 每组测试数据的第一行是一个整数M(0<M<=100),表示工有M次成功的交易.其后有M行数据,每行表示一次交易,由水果名称(小写字母组成,长度不超过80),水果产地(小写字母组成,长度不超过80)和交易的水果数目(正整数,不超过100)组成. .原创 2021-04-25 20:30:34 · 264 阅读 · 0 评论 -
最长上升子序列
题目 这道题的意思的是左边是1到n的上升序列,右边是我们输入的顺序,求不相交情况下能连接的最多线数。 思路,求最长的一个上升子序列就行,可以用到lower_bound();函数不会点这里 注:*lower_biound()相当于取这个地址的值,不加就是返回地址,减去首地址就是他所在的位置;具体看之前的网址。 代码如下: #include<iostream> #include<algorithm> using namespace std; int main() { int i,.原创 2021-04-25 20:14:24 · 86 阅读 · 0 评论 -
回溯—迷宫问题
回溯 数据结构上的例题 要求从迷宫中走出,迷宫如下 0,0,0,0,0,0,0,0,0,0 0,1,1,0,1,1,1,0,1,0 0,1,1,0,1,1,1,0,1,0 0,1,1,1,1,0,0,1,1,0 0,1,0,0,0,1,1,1,1,0 0,1,1,1,0,1,1,1,1,0 0,1,0,1,1,1,0,1,1,0 0,1,0,0,0,1,0,0,1,0 0,0,1,1,1,1,1,1,1,0 0,0,0,0,0,0,0,0,0,0 这里0代表墙,1代表可以走的路。 可以用DFS和原创 2021-04-19 21:20:15 · 80 阅读 · 0 评论 -
错排兼排列组合公式
错排 > 概念 首先引进一个概念,什么是错排; 错排就是讲一个有顺序的数组,其中的每个数,排列后不在原本的位置。 例如 1 2 3 4 5 其中1不能放在第一个地方,2不能放在第二个地方,以此类推。 这里有张图给你理解接下来要给出的公式 如果想更好理解的话这里有个链接 黑谷小健 莫哥yyds 公式 int dp[25]; dp[1]=0; dp[2]=1; for(i=3;i<=n;i++)//原创 2021-04-15 21:22:56 · 387 阅读 · 1 评论