![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法总结
强尼.
擎
展开
-
二叉树非递归的三种遍历方式
在学习二叉树的过程中学会的比较易懂的非递归遍历方式:// //关于二叉树的非递归的三种遍历方式。//#include <iostream>//using namespace std;//typedef struct bTree//{// int val;// bTree* left;// bTree* right;//}*pbTree;//pbTree Stack[10];//int StackSize = -1;////首先是先序遍历//void原创 2021-10-29 22:37:45 · 171 阅读 · 0 评论 -
红黑树插入删除情况图片总结,帮助你快速回忆。
学习了红黑树,但经常忘记红黑树的插入删除情况? 进来看图片总结,帮助你快速回忆!rehash讲解,红黑树和AVL树对比原创 2022-09-26 11:57:37 · 818 阅读 · 7 评论 -
十大排序算法简易代码实现
插入排序:3行; 冒泡和选择:6行; 希尔排序:7行, 计数排序:7行; 基数排序:9行,桶排序:12行原创 2022-07-24 15:00:53 · 378 阅读 · 0 评论 -
全排列、排列组合(去重区别)
全排列&排列组合实现排除重复项的细微区别本篇文章以 全排列方法,和排列组合来进行阐述。这里的排列组合用了一道例题来展开**(目标值的不同组合方式)**首先是全排列,用了两种方式来实现 :1.swap交换,2:数组递归实质都是递归,但他们排除数据重复项还是有一定区别的。一、全排列1.swap交换法代码:#include<iostream>using namespace std;int tmp[3];void print()//打印数据部分{ for (auto v原创 2022-02-20 12:32:37 · 1395 阅读 · 0 评论 -
迷宫找出口(BFS最短路)
#include <iostream>#include <vector>#define COLS 10#define ROWS 10using namespace std;struct MyPoint{ int y; int x; friend bool operator==(const MyPoint& p1, const MyPoint& p2);};bool operator==(const MyPoint& p1, const原创 2021-12-16 20:52:26 · 398 阅读 · 1 评论 -
从M个数中选K个数进行排列组合(非swap交换)
#include <algorithm>using namespace std;#define N 100001int aa[N], bb[N], ans; int M, K;void Print(){ for (int i = 1; i <=K; i++) { cout << bb[i] << " "; } cout << endl;}void dfs(int x,int h){原创 2021-12-15 09:01:45 · 886 阅读 · 0 评论 -
图的DFS/BFS遍历,简易易懂
#include <iostream>#include <queue>using namespace std;bool cmp[100];queue<int>Myqueue; struct Node //链表结构{ int vex; int weight; Node* next;};typedef struct Hnode //头结构{ char data; //节点数据 Node* head;}*List;typedef原创 2021-12-14 17:42:21 · 730 阅读 · 0 评论 -
C++类和结构体运算符重载区别
运算符的重载类重载友元重载下边我将用结构体和类两种方式来展示他们各自的重载方式。其中结构体只有一种重载方式相当于类中的友元重载,而类中分为类重载和友元重载一、结构体里面的运算符重载方式:(用到了+和<<的运算符重载)#include <iostream>using namespace std;struct score{ score(int math):math(math){} score(int math=0,int english=0):math(math)原创 2021-11-27 22:56:32 · 358 阅读 · 2 评论 -
图的邻接矩阵实现
#include <iostream>#include <string>#define WUXIANG 0using namespace std;struct Graph{ int vertexs; //头节点 int edges; //边 char* pVertex; //用来存放所有的顶点。 int** ppEdge; //用来存储所有的边。};//创建图对象Graph* CreateGraph();//释放图对象void destroyGraph原创 2021-11-26 06:14:30 · 130 阅读 · 0 评论 -
深度寻路(迷宫找出口)数组栈和堆栈两种方法实现
数组栈实现#include <stdio.h>#include <stdlib.h>#define CRT_SECURE_NO_WARINGS#pragma warning(disable:6011)#pragma warning(disable:6386)/*0 0 1 1 11 0 0 1 11 1 0 0 11 0 0 1 11 1 0 0 01 1 1 1 1 1 1 1 1 11 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1原创 2021-11-23 19:22:48 · 681 阅读 · 0 评论 -
01背包问题,简易AC代码加详细讲解,地宫寻宝,波动数列等DP问题。
01背包问题题目描述有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值输出格式输出一个整数,表示最大价值。两种方式解决这道题,一维和二位二维方式:[外链图片转存失败,源站可能有防盗原创 2021-11-21 00:15:00 · 345 阅读 · 1 评论 -
波动数列,简易AC代码,详细讲解。
波动数列这道题真的是需要自己花时间来理解细节。思路:如下图所示,该序列的首项是x,公差为set,set={a,-b};通过下边的第一幅图我们可以知道,set的数量为n*(n-1)/2 (公式:首项加末项除以2)我们令cnt=n*(n-1)/2 (也就是set的数量) 通过这些分析我们可以知道满足这么一个条件:序列总和=Sn=nx+cntset我们假设a的数量为num1,因为a,b数量的总和是cnt,则b的数量就是cnt-num1; 可推出一个表达式nx+a * num1-b(cnt-nu原创 2021-11-19 23:53:53 · 965 阅读 · 1 评论 -
地宫寻宝蓝桥杯,详细讲解。
地宫寻宝 (用了两种解题思考方式,大致相同,看哪种更适合你理解)解题思路:题目说了如果遇到比当前最大价值还要大的物品(所以当前最大价值的物品一定要用一个变量来进行记录,方便后续每次的比较),可拿可不拿(所以有两种情况,拿或者不拿);这道题采用递归的方式再好不过了,其实可以把递归的方法理解为能把地图上的每一可能的坐标(每一种可能的情况)都考虑进来然后进行一个比较。下边直接上代码。#include <iostream>using namespace std;int n,m,k,Count原创 2021-11-18 09:44:56 · 305 阅读 · 0 评论 -
蚂蚁感冒,蓝桥杯,简易AC代码讲解
蚂蚁感冒问题题目这里就不省略了,请自己先阅读了解题意再来看下边的解析!本题思路:这道题的需要明白一个道理就是两只蚂蚁相遇就会各自反向,把这个过程理解为两只蚂蚁穿过了对方,这样理解对本题有一定帮助。一般情况,题目说了第一个数据为感冒的蚂蚁,如果是在感冒蚂蚁左边的蚂蚁,并且向着这只感冒蚂蚁方向的蚂蚁一定会被感染,同理,这只感冒的蚂蚁右边的蚂蚁,只要是向着这只感冒蚂蚁走的都会被感染。特殊情况:这只感冒的蚂蚁(即第一个数据,身处边界,比如在最左边,并且它行走的方向也是左边,那么它右边的蚂蚁即使是向着它的方原创 2021-11-17 15:05:23 · 277 阅读 · 0 评论 -
二分、前缀和(激光炸弹)几道例题的详细讲解,帮助理解相关知识点
二分和前缀和激光炸弹#include <iostream>using namespace std;int map[1001][1001];int main(){ int n ,r; cin >> n >> r; int ra, rb; ra = rb = r; for (int i = 0; i < n; i++) { int x, y,w; cin >> x >> y>>w; x++;//原创 2021-11-15 18:39:35 · 351 阅读 · 0 评论