
算法
Xun_M
思科认证网络专家(CCIE#657** ) ;江苏省网络系统管理赛项一等奖;领航杯网络安全本科组省特等奖;蓝桥杯C/C++省赛一等奖、国赛二等奖、WEB本科组省一等奖;
展开
-
队列运用 数组元素循环右移问题
题解:网上看了很多答案,感觉都是挺复杂的而且麻烦。这里我写下我自己的思路(大佬轻喷)用双端队列存储数组,如果要右移的话,只要将最后一位移动到第一位即可,移动几位,循环几次即可。代码:#include <bits/stdc++.h>using namespace std;int main() { deque<int> dp; int n, m; cin >> n >> m; for (int i =...原创 2021-02-23 14:15:11 · 213 阅读 · 0 评论 -
DFS回溯算法 字符串排列
题目描述:输入一个字符串,打印出该字符串中所有字符的排列(不允许重复)输入:abc输出:abc acb bac bca cab cba题解:DFS+回溯思想代码:#include <bits/stdc++.h>using namespace std;int vis[99999];string str, ans;map<string, string> mp;void dfs(int x) { if (x == str.原创 2021-04-04 17:15:49 · 158 阅读 · 0 评论 -
BFS算法 马的遍历
题目描述有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步题解:这题主要难度在于,马如何移动。我们只要将马移动的范围画出来,思路就非常清晰了又上图可见,马从起点(0,0)搜索的范围有8个,将其转换代码如下:int dx[] = {1, 2, 2, 1, -1, -2, -2, -1};int dy[] = {2, 1, -1, -2, -2, -1, 1, 2};我们依次搜索到结束,就能获取到最小路径原创 2021-03-10 22:06:25 · 602 阅读 · 0 评论 -
BFS算法 蓝桥杯长草问题
题目描述小明有一块空地,他将这块空地划分为nn行mm列的小块,每行和每列的长度都为 1。小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,这四小块空地都将变为有草的小块。请告诉小明,kk个月后空地上哪些地方有草。解题思路见BFS算法入门 走迷宫问题代码#include <bits/stdc++.h>using namespace ...原创 2021-03-07 00:47:54 · 726 阅读 · 0 评论 -
BFS算法 走迷宫问题 C++代码详细解释
题目:从起点走向终点至少需要多少步(黄色为墙,不可走,每个节点只能走一次)第一行为 n * m的地图规格接下来是m行地图数据,最后一行的头俩位是起始位置,尾俩位是终点位置;输入样例:5 41 1 2 11 1 1 11 1 2 11 2 1 11 1 1 21 1 4 3输出样例:7题解:数据结构:队列节点结构:struct node { int x; //x轴 int y; //y轴 int step; //走.原创 2021-03-06 22:46:11 · 1499 阅读 · 0 评论 -
DP动态规划 背包问题 简单实现
题目:有4种物品和一个容量为7的背包,每种物品都就可以选择任意多个,第i种物品的价值为value[i],重量为weight[i],求解:选哪些物品放入背包,可使得这些物品的价值最大,并且体积总和不超过背包容量。题解:我们通过画图得出状态转移方程:max( dp[ i-1 ][ j ] , dp[ i-1 ][ j - weight [ i ] ] + value [ i ] )将过程抽象得出代码如下:#include <bits/stdc++.h>using name原创 2021-03-06 16:03:18 · 209 阅读 · 0 评论