自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 D3-八数码

在一个 3×3的网格中,1∼8这 8数字和一个 x 恰好不重不漏地分布在这 3×3的网格中。在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为正确排列

2024-04-15 22:46:25 174

原创 D2-走迷宫

给定一个 n×m的二维整数数组,用来表示一个迷宫,数组中只包含 0或 1,其中 0表路,表示不可通过的墙壁。最初,有一个人位于左上角 (1,1)处,已知该人每次可以向上、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m)处,至少需次。数据保证 (1,1)处和 (n,m)处的数字为 0,且一定至少存在一条通路。

2024-04-14 23:17:28 171 1

原创 D1-n皇后

n−皇后问题是指将 n个皇后放在 n×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。

2024-04-13 22:50:04 304

原创 c++ getline()详解

etline()函数在c++中有两种用法,第一种定义在$$头文件中,第二种定义在$头文件中。getline()在这两种用法中都是用于读入一行字符串,可以带空格等特殊字符,在第二种用法中getline的第一个参数传的是`流`,比如:cin和stringstream

2022-12-06 17:55:06 13628

原创 c++ split 实现字符串分割

因为c++中没有split函数,所以可以使用getline和stringstream结合实现。

2022-12-06 17:54:19 2182 1

原创 最全动态规划题型详解

通俗的讲动态规划(dp)的核心就是记住已经解决过子问题的解,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。dp常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所消耗的时间往往远小于朴素解法。

2022-11-17 20:54:35 6163 5

原创 linux 中 vim/vi的常用命令

vi的三种基本工作模式:normal模式:正常模式insert模式:插入模式command模式:底部命令模式、末行模式。

2022-11-09 20:20:26 1490

原创 什么是字节 字节和位的关系

什么是字节?字节和位的关系和相关的换算

2022-10-14 08:57:36 4952

原创 Ac自动机 c++

学会Ac自动机前提是要知道tire树和kmp的实现和原理

2022-08-30 21:30:19 793 2

原创 Spring Boot 解决跨域问题

Spring Boot 解决跨域问题。

2022-08-08 23:00:39 99

原创 二进制中1的个数

二进制中1的个数。

2022-07-22 16:30:43 105

原创 一文搞懂什么是一维差分

差分与前缀和相对,可以视为前缀和的逆运算。差分它可以维护多次对序列的一个区间修改一个数。类似于数学中的求导和积分。

2022-07-22 16:00:52 196

原创 详解五种最短路径算法及其区别(c++)

目录一.朴素Dijkstra算法二.堆优化的Dijkstra三.bellman_ford算法四.spfa算法五.floyd算法总结: 算法基本思路:eg:1. 2.3. 4.红色表待定的4. 5. 6. 简单地说就是先找出一个距离起点最近的,然后再由这个距离起点最近的点更新别的点朴素dijkstra模板题:题目:https://www.acwing.com/problem/content/851/ 代码如下:二.堆优化的Dijkstra算法步骤和朴素算法一样,只是

2022-07-03 17:06:52 3091

原创 n皇后最简洁且易懂(c++)

题目如下:代码如下:如果看不懂下面回溯解法,请看#include<bits/stdc++.h>using namespace std;const int N = 20;int n;char g[N][N];//col一列是否用过,dg正对角线是否用过,udg反对角线是否用过 //udg和dg若为true则说明这两条对角线已经用过了不能再用了 bool col[N],dg[N],udg[N];void dfs(int u){ if(u == n) {

2022-05-29 09:24:54 155

原创 位运算求十进制转换二进制

步骤:1.先根据n的值判断此数的二进制位数(2的n次方)2.将此数二进制的最高为右移i位到最右边(n>>i)3.&1后输出(&1为了输出)#include<bits/stdc++.h>using namespace std;int main(){ int n = 10;//2^4=16所以10的二进制有4位 for(int = 3;i>=0;i--)//将此数二进制的最高为右移i位到最右边,&1后输出

2022-05-09 10:57:48 488

转载 彻底搞懂回溯法(本文真的很详细)

目录回溯法理论基础组合问题组合问题转载于:https://zhuanlan.zhihu.com/p/302415065回溯法理论基础「回溯是递归的副产品,只要有递归就会有回溯」,所以回溯法也经常和二叉树遍历,深度优先搜索混在一起,因为这两种方式都是用了递归。回溯法就是暴力搜索,并不是什么高效的算法,最多再剪枝一下。回溯算法能解决如下问题:组合问题:N个数里面按一定规则找出k个数的集合 排列问题:N个数按一定规则全排列,有几种排列方式 切割问题:一个字符串按一定规则

2022-03-20 22:24:45 60408 21

原创 拓扑排序 C++

在AOV网中,若不存在回路,则所有活动可排列成一个线性序列,使得每个活动的所有前驱活动都排在该活动的前面,我们把此序列叫做拓扑序列(不是唯一的),​由AOV网构造拓扑序列的过程叫做拓扑排序​...

2022-03-10 21:21:42 1011

原创 双指针算法

什么是双指针双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,一般用于求数组的相关问题。对撞指针对撞指针是指在数组中,将指向最左侧的索引定义为左指针(left),最右侧的定义为右指针(right),然后从两头向中间进行数组遍历。当遇到连续数组和字符串时第一时间想到对撞指针解题能省一次for循环。伪代码如下:while(left<right){ left++; right

2022-03-06 09:28:56 608

原创 粗略判断算法是否超时

一般评测机一秒最多可以运行 一亿次 即 10^8次。而一般编程竞赛都会将时间限制为 1000ms 即 1s。在这种情况下,C++ 代码的操作次数控制在 10e7~10e8为最佳。1000ms意味着O(n3)的算法,可以几百,一般题目给的数据范围为100。O(n2)的算法,可以几千,一般不到万,经常出现的就是数据范围1000。O(nlongn)或者O(n)的算法,最常见的数据范围就是为100000。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:参考:如何由数据

2022-03-05 21:47:13 1609

原创 经典排序算法总结(C++)

常见的分类算法还可以根据排序方式分为两大类:比较排序和非比较排序,比较排序就是常见的几种。  非比较排序的特点是时间复杂度很低,都是线性复杂度O(n),但是非比较排序受到的限制比较多,不是通用的排序算法,有如下几种: 1)计数排序(Count Sort)(复杂度O(n+k)(其中k是待排序的n个数字中最大值)  2)基数排序(Bucket Sort)(复杂度O(nk)(其中k是最大数字的位数) 3)桶排序(Radix Sort)(复杂度O(n+k)(其中k是待排序的n........

2022-03-04 22:42:13 479 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除