![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法入门
文章平均质量分 93
ymz123_
C/C++
展开
-
算法练习1
文章目录复数乘法一年中的第几天k个一组翻转链表递增子序列复数乘法问题描述:输入两个表示复数的字符串,输出它们相乘的结果的字符串复数字符串用a+bi表示(a, b 为整数, i为虚数单位,i2=1)输入例子:1±2i3+4i输出例子:11±2i例子说明:(1±2i)(3+4i) = (3 + 4i - 6i - 8i * i) = 11±2i#include<iostream>#include<string>#include<vector>原创 2022-01-15 01:05:20 · 463 阅读 · 0 评论 -
回溯算法之广度优先搜索
文章目录迷宫问腿N叉树的层序遍历腐烂的橘子单词接龙打开转盘锁迷宫问腿假设有一个迷宫,里面有障碍物,迷宫用二维矩阵表示,标记为0的地方表示可以通过,标记为1的地方表示障碍物,不能通过。现在给一个迷宫出口,让你判断是否可以从入口进来之后,走出迷宫,每次可以向任意方向走。代码实现:namespace BFS { struct pair { int _x; int _y; pair(int x, int y) :_x(x) , _y(y) {} }; bool map原创 2022-01-13 01:40:32 · 987 阅读 · 14 评论 -
回溯算法--深度优先搜索
文章目录扑克牌全排列员工的重要性图像渲染被围绕的区域岛屿数量电话号码的字母组合组合总数活字印书N皇后扑克牌全排列假如有编号为1~ 3的3张扑克牌和编号为1~3的3个盒子,现在需要将3张牌分别放到3个盒子中去,且每个盒子只能放一张牌,一共有多少种不同的放法。解题思路:假定按照牌面值从小到大依次尝试,即将1号牌放入第一个盒子中。按此顺序继续向后走,放完第三个盒子时,手中的牌也已经用完,再继续往后则到了盒子的尽头。此时一种放法已经完成了,即这条路走到了尽头,需要折返,重新回到上一个盒子。这里回到第三个盒子,原创 2022-01-11 14:50:17 · 872 阅读 · 15 评论 -
贪心算法典例
文章目录选择排序平衡字符串买股票的最佳时机跳跃游戏钱币找零多机调度问题活动选择无重叠区间选择排序我们熟知的选择排序,其采用的就是贪心策略。它所采用的贪心策略即为每次从未排序的数据中选取最小值,并把最小值放在未排序数据的起始位置,直到未排序的数据为0,则结束排序。void swap(int* arr, int i, int j){ int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;}void selectSort(int* arr, int原创 2022-01-09 17:36:27 · 4590 阅读 · 24 评论 -
动态规划问题(2)
文章目录背包问题分割回文串编辑距离不同子序列背包问题问题描述:有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小和数组 V 表示每个物品的价值.问最多能装入背包的总价值是多大?A[i], V[i], n, m 均为整数你不能将物品进行切分你所挑选的要装入背包的物品的总大小不能超过 m每个物品只能取一次m <= 1000m<=1000len(A),len(V)<=100len(A),len(V)<=100解题思路:1.状态:F(i,j原创 2022-01-08 17:15:07 · 1004 阅读 · 19 评论 -
动态规划问题
文章目录Fibonacci字符串分割(Word Break)三角矩阵(Triangle)路径总数(Unique Paths)最小路径和(Minimum Path Sum)Fibonacci题目描述:大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。解题思路:1.递归2.动态规划状态:F(n)状态递推:F(n)=F(n-1)+F(n-2)初始值:F(1)=F(2)=1返回结果:F(N)代码实现:法一:递归(效率低):class Solutio原创 2022-01-05 23:53:20 · 412 阅读 · 0 评论 -
二叉树相关练习(1)
文章目录重建二叉树判断树的子结构二叉树的镜像二叉树的层序遍历二叉树的后序遍历序列二叉树中和为某一值的路径二叉树深度的判定按之字型打印二叉树二叉搜索树中第k小的元素重建二叉树题目描述:给定节点数为 n 二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。解题思路:根据root节点,将中序vector划分成vin_left,vin_right两部分中序子序列原创 2021-12-26 00:47:50 · 415 阅读 · 0 评论 -
算法入门day1(数组)
文章目录二维数组中的查找旋转数组的最小数字调整数组位置使奇数位于偶数前面数组中出现次数超过一半的数字二维数组中的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。如以下二维数组:1 2 3 42 3 4 53 4 5 6解题思路: 查找的本质是排除。根据这个二维数组的特性,可以选取右上角或者左下角的数字作为标准,假设选择右上角数字,如果目原创 2021-11-24 22:43:25 · 277 阅读 · 0 评论