![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
automan_huyaoge
对智能机器人,无人驾驶感兴趣
展开
-
黑马自学资源
C++自学原创 2022-08-19 09:48:38 · 577 阅读 · 0 评论 -
斐波那契数列求解
int fib(int N) {if (N == 1 || N == 2) return 1;return fib(N - 1) + fib(N - 2);}暴力递归求解,时间复杂度O(2^n)int fib(int N) {if (N < 1) return 0; // 备忘录全初始化为 0 vector<int> memo(N + 1, 0); // 初始化最简情况 return helper(memo, N);}int he.转载 2022-01-27 10:20:34 · 87 阅读 · 0 评论 -
C++ opencv入门
OpenCV探索之路(八):重映射与仿射变换 - Madcola - 博客园转载 2021-12-30 11:12:33 · 145 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 4 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。给你一个元素值 互不相同 的数组转载 2021-04-08 10:33:38 · 134 阅读 · 0 评论 -
697. 数组的度
给定一个非空且只包含非负数的整数数组nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与nums拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入:[1, 2, 2, 3, 1]输出:2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, ...转载 2021-02-20 09:39:45 · 161 阅读 · 0 评论 -
面试题 16.24. 数对和
设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。示例 1:输入: nums = [5,6,5], target = 11输出: [[5,6]]示例 2:输入: nums = [5,6,5,6], target = 11输出: [[5,6],[5,6]]提示:nums.length <= 100000C++解决方案class Solution {public: vector<vector<int>> pairS转载 2021-02-02 16:53:25 · 133 阅读 · 0 评论 -
面试题 16.21. 交换和
给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。示例:输入: array1 = [4, 1, 2, 1, 1, 2], array2 = [3, 6, 3, 3]输出: [1, 3]示例:输入: array1 = [1, 2, 3], array2 = [4, 5, 6]输出: []提示:转载 2021-02-02 16:51:41 · 101 阅读 · 0 评论 -
基础算法思想
编程的灵魂:数据结构+算法 算法的作用 递推算法 枚举(穷举)算法 递归算法 分治算法 贪婪算法 试探算法 模拟算法 算法的评价1、猜价格(算法的作用)#include <stdio.h>#include <cstdlib> //#include<curses.h>int main(){ int oldprice,price=0,i=0; printf("请首先设置商品的真实价格:"); scanf("%转载 2021-01-29 14:35:18 · 136 阅读 · 0 评论 -
1114. 按序打印
我们提供了一个类:public class Foo {public void first() { print("first"); }public void second() { print("second"); }public void third() { print("third"); }}三个不同的线程将会共用一个Foo实例。线程 A 将会调用 first() 方法线程 B 将会调用second() 方法线程 C 将会调用 third() 方法请设计修改程序,以...转载 2021-01-13 14:08:08 · 178 阅读 · 0 评论 -
深度优先搜索解决八数码问题
//程序描述:基于盲目搜索策略的宽度优先搜索方法#include <iostream>#include <string>#include <cstring>#include <cmath>#include <vector>// #include <queue>#include <stack>#include <set>using namespace std;#define N 9 .原创 2021-01-11 15:21:50 · 2688 阅读 · 0 评论 -
171. Excel表列序号
给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例2:输入: "AB"输出: 28示例3:输入: "ZY"输出: 701C++解决方案class Solution {public: int t...转载 2021-01-11 14:43:32 · 98 阅读 · 0 评论 -
169. 多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:[3,2,3]输出:3示例2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。C++解决方案class Solution {public: int majorityElement(vector&...转载 2021-01-11 14:38:58 · 93 阅读 · 0 评论 -
228. 汇总区间
给定一个无重复元素的有序整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:"a->b" ,如果 a != b"a" ,如果 a == b示例 1:输入:nums = [0,1,2,4,5,7]输出:["0->2","4->5","7"]解释:区间范围是:[0,2].转载 2021-01-11 14:22:29 · 63 阅读 · 0 评论 -
172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释:3! = 6, 尾数中没有零。示例2:输入: 5输出: 1解释:5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为O(logn)。class Solution {public: int trailingZeroes(int n) { if(n<5){ return 0; } ...转载 2021-01-08 10:11:43 · 57 阅读 · 0 评论 -
189. 旋转数组
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:向右旋转 1 步: [99,-1,-100,3]...转载 2021-01-08 10:01:47 · 64 阅读 · 1 评论 -
广度优先搜索解决八数码问题
//程序描述:基于盲目搜索策略的宽度优先搜索方法#include <iostream>#include <string>#include <cstring>#include <cmath>#include <vector>#include <queue>#include <set>using namespace std;#define N 9 //九宫格总数字//数组定义:0~9阶乘定.原创 2021-01-08 09:08:51 · 700 阅读 · 1 评论 -
547. 省份数量
有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输入:isC.转载 2021-01-07 11:12:41 · 102 阅读 · 0 评论 -
830. 较大分组的位置
在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 s = "abbxxxxzyy"中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6] 。我们称所有包含大于或等于三个连续字符的分组为 较大分组 。找到每一个 较大分组 的区间,按起始位置下标递增顺序.转载 2021-01-05 10:48:50 · 68 阅读 · 0 评论 -
509. 斐波那契数
斐波那契数,通常用F(n) 表示,形成的序列称为 斐波那契数列 。该数列由0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1)= 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2示例 ...转载 2021-01-04 09:16:25 · 70 阅读 · 1 评论 -
435. 无重叠区间
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:输入:转载 2020-12-31 09:20:59 · 98 阅读 · 0 评论 -
1046. 最后一块石头的重量
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为x 和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎;如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。示例:输入:[2,7,4,1,8,1]输出:1解释:先选出 7 和 8,得到 1,所...转载 2020-12-30 09:32:01 · 80 阅读 · 0 评论 -
188. 买卖股票的最佳时机 IV
给定一个整数数组prices ,它的第 i 个元素prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。示例 2:输入:k...转载 2020-12-28 09:13:43 · 88 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 ...转载 2020-12-25 16:52:52 · 73 阅读 · 0 评论 -
121. 买卖股票的最佳时机
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。...转载 2020-12-25 16:39:45 · 85 阅读 · 0 评论 -
455.分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,3个孩子的胃口值...转载 2020-12-25 16:03:14 · 74 阅读 · 0 评论 -
376. 摆动序列
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如,[1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3)是正负交替出现的。相反, [1,4,7,2,5]和[1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一些(也可以不删除)元...转载 2020-12-24 17:09:40 · 79 阅读 · 1 评论 -
387.字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2提示:你可以假定该字符串只包含小写字母。C++解决方案:class Solution {public: int firstUniqChar(string s) { int cnt[26]; memset(cnt, 0, sizeof(cnt)); .转载 2020-12-24 16:48:47 · 64 阅读 · 1 评论 -
135. 分发糖果
老师想给孩子们分发糖果,有 N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例2:输入: [1,2,2]输出: 4解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。 第三...转载 2020-12-24 16:42:57 · 82 阅读 · 1 评论 -
贪心算法简介
1.贪心算法简介1.1 基本定义在贪婪算法(greedy method)中,我们要逐步构造一个最优解。每一步,我们都在一定的标准下,做出一个最优决策。做出决策所依据的标准称为贪心准则(greedy criterion)。贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法每一步必须满足以下条件: 1、可行的:即它必须满足问题的约束。 2、局部最优:他是当前步骤中所有可行选择中最佳的局部.转载 2020-12-14 09:58:44 · 1434 阅读 · 1 评论 -
860. 柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回true,否则返回 false。示例 1:输入:[5,5,5,10,20]输出:true解释:前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。...转载 2020-12-10 17:21:29 · 67 阅读 · 2 评论 -
八数码游戏
游戏规则移动九宫格中的0,使得最终状态等于:1 2 34 5 67 8 0C/C++源代码 #include <stdio.h> #include <iostream> #include <stdlib.h> // #include<conio.h>using namespace std;class BSM{private: int m_init_state[3][3]; int m_g...原创 2020-12-09 22:59:15 · 642 阅读 · 1 评论 -
62. 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右3. ..转载 2020-12-09 11:01:17 · 95 阅读 · 0 评论 -
扫雷游戏(linux C语言)
1、游戏规则这款游戏的玩法是在自定义大小的方块矩阵中随机布置一定量的地雷。由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。使用鼠标左键随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷。如果玩家翻开的方块有地雷,则游戏结束。2、程序流程建立一个游戏菜单 创建两个游戏盘(一个用于用户显示,另一个用于放置地雷) 将两个游戏盘初始化 将初始化后的游戏盘进行打印 玩家翻开游戏盘并打印(玩家输入行列坐标的方式来翻开) 更新游戏信息(翻到地雷则直转载 2020-12-09 09:37:37 · 1526 阅读 · 0 评论 -
三子棋游戏
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<unistd.h>#include<time.h> #include <stdlib.h>//三子棋游戏#define MAX_ROW 3//宏定义行数,列数,方便后续进行修改#define MAX_COL 3//一·创建一个游戏菜单//菜单函数int menu(){ printf("===================.转载 2020-12-08 23:00:37 · 1510 阅读 · 0 评论 -
ROS机器人编程与SLAM算法解析第二章
节点PubForBeginner.cpp/* **************** Author: Tomanlon Copyright: Tomanlon Date: 2019.2.26 Description: Simple ros publish demo for beginning learners MailBox: taomanl@163.com HowToRun: rosrun book_node PubForBeginn.转载 2020-12-08 20:14:44 · 618 阅读 · 0 评论 -
ROS入门21讲---10.发布者Publisher的编程实现
创建功能包catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesimvelocity_publisher.cpp/***********************************************************************Copyright 2020 GuYueHome (www.guyuehome.com).*********************..转载 2020-12-08 09:12:41 · 151 阅读 · 0 评论 -
《ROS机器人开发实践》学习:TF坐标变换
turtle_tf_broadcaster.cpp#include <ros/ros.h>#include <tf/transform_broadcaster.h>#include <turtlesim/Pose.h>std::string turtle_name;void poseCallback(const turtlesim::PoseConstPtr& msg){ // tf广播器 static tf::Transfor转载 2020-12-07 11:12:42 · 568 阅读 · 0 评论 -
《ROS机器人开发实践》学习:服务中的Server与Client
查看服务列表rosservice list输入完命令后一直按键盘上的Tap键, 出现name: ‘’"时 再按回车,新生成一只乌龟rosservice call /spawn "x: 8.0 y:8.0 theta: 0.0 name: 'turtle2'"在srv/AddTwoInts.srv:int64 aint64 b---int64 sum在package.xml添加: <build_depend>message_generation<.转载 2020-12-07 10:22:35 · 137 阅读 · 0 评论 -
《ROS机器人开发实践》学习:话题中的publisher与subcriber
talker.cpp/** * 该例程将发布chatter话题,消息类型String */ #include <sstream>#include "ros/ros.h"#include "std_msgs/String.h"int main(int argc, char **argv){ // ROS节点初始化 ros::init(argc, argv, "talker"); // 创建节点句柄 ros::NodeHandle n;转载 2020-12-07 09:48:15 · 266 阅读 · 0 评论 -
118. 杨辉三角
给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1],[1,4,6,4,1]]C++解决方案:class Solution {public: vector<vector<int>> generate(int numRows) { vector<...转载 2020-12-07 09:19:38 · 92 阅读 · 0 评论