C++笔试中遇到的问题

2023-05-16

   1.  sizeof与strlen的区别?

        答: sizeof是操作符,分配的数组实际所占的内存空间大小,不受里面存储内容的影响。strlen是函数,strlen计算字符串的长度,以'\0'为字符串结束标志。

输出为 : 4    10        11    10

2. 逆序输出链表?

      答: 我们有两种办法,将链表的节点压入栈中,依次弹出,打印链表的值。第二种是用递归来实现链表的逆序输出。

3.判断链表是否有环?

     答: 判断一个链表是否有环,定义两个指针,让一个走一步,一个走两步,如果有环,走两步的肯定会追上走一步的,所以,写下如下代码:

4. 地上有m行n列的方格,一个机器人从坐标(0,0)的格子开始移动,它的每一次可以左、右、上、下 移动一格,但不能移动到行坐标和列坐标的数位之和大于k的格子?

  答: 典型的回溯法例题,机器人从(0,0)开始移动,当他准备进入坐标(i,j)的格子时,通过检查坐标数位和来判断机器人是否能够进入,当机器人能够进入坐标为(i, j)的格子,在判断它能够进入四个相邻的格子(i,j-1)(i-1,j) 、(i,j+1),(i+1,j的格子

//这个函数是用来解决这个问题的函数
int movingCount(int k, int rows, int cols)
{
	bool *visited = new bool[rows*cols];   //用来判断所有的格子是否走过
	for (int i = 0; i < rows*cols; i++)
		visited[i] = false;               //全部赋值为false,也就是没走过
	int count = movingCountCore(k, rows, cols, 0, 0, visited);  //用来计算符合问题的格子数目
	delete[] visited;                     //释放开辟的内存
	return count;
}
//用这个函数来计算格子的数量
int movingCountCore(int k, int rows, int cols, int row, int col, bool* visited)
{
	int count = 0;
	if (check(k, rows, cols, row, col, visited))    //检查是否满足条件
	{
		visited[row*cols + col] = true;             //满足的话,就当前格子赋值为true,也就是走过
		count = 1 + movingCountCore(k, rows, cols, row - 1, col, visited)
			+ movingCountCore(k, rows, cols, row , col-1, visited)
			+ movingCountCore(k, rows, cols, row+1, col, visited)
			+ movingCountCore(k, rows, cols, row, col + 1, visited);
	}
	return count;
}
//查看这个格子是否能走
bool check(int k, int rows, int cols, int row, int col, bool*  visited)
{
	if (row >= 0 && row < rows && col >= 0 && col < cols && getDigitSum(row) + getDigitSum(col) <= k && !visited[row*cols + col])
		return true;

	return false;
}
//用来计算数位之和
int getDigitSum(int number)
{
	int sum = 0;
	while (number > 0)
	{
		sum += number % 10;
		number = number / 10;
	}
	return sum;
}

    4. 2 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。

 

//用来计算矩阵中是否有这条路径, 有的话true
bool hasPath(char* array, int rows, int cols, char* str)
{
	if (array == NULL || rows < 1 || cols < 1 || str == NULL)    //边界判断
		return false;
	bool *visited = new bool[rows*cols];                       //将矩阵赋值为全没走过
	memset(visited, 0, rows*cols);                             
	int pathLength = 0;
  //在原字符串矩阵中,不知道这个子字符串的开始元素,所以每个元素都得遍历
	for (int row = 0; row < rows; ++row)
	{
		for (int col = 0; col < cols; ++col)
		{
			if (hasPathCore(array, rows, cols, row, col, str, pathLength, visited))
			{
				return true;
			}
		}
	}
	delete[]  visited;            //释放内存
	return false;
}
//矩阵中查找子串路径的函数
bool hasPathCore(char *array, int rows, int  cols, int row, int  col, char *str, int pathLength, bool* visited)
{
	if (str[pathLength] == '\0')    
		return true;
	bool hasPath = false;
	if (row >= 0 && row < rows&&col >= 0 && col < cols&&array[row*cols + col] == str[pathLength] && !visited[row*cols + col])
	{
		++pathLength;
		visited[row*cols + col] = true;
		hasPath = hasPathCore(array, rows, cols, row, col-1, str, pathLength, visited) ||
			hasPathCore(array, rows, cols, row - 1, col, str, pathLength, visited) ||
			hasPathCore(array, rows, cols, row, col + 1, str, pathLength, visited) ||
			hasPathCore(array, rows, cols, row + 1, col, str, pathLength, visited);
		if (!hasPath)
		{
			--pathLength;
			visited[row*cols + col] = false;
		}
	}
	return hasPath;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++笔试中遇到的问题 的相关文章

  • FreeRTOS内存管理之heap_4.c

    FreeRTOS内存管理之heap 4 c源码解析 每当创建任务 队列 互斥量 软件定时器 信号量或事件组时 xff0c RTOS内核会为它们分配RAM 标准函数库中的malloc 和free 函数有些时候能够用于完成这个任务 xff0c
  • git图形化管理工具

    一 独立客户端工具 1 GitHub for Desktop 全球开发人员交友俱乐部提供的强大工具 xff0c 功能完善 xff0c 使用方便 对于使用GitHub的开发人员来说是非常便捷的工具 界面干净 xff0c 用起来非常顺手 xff
  • ROS功能包

    ROS package介绍 package是什么呢 xff1f 指的是一种特定的文件结构和文件夹组合 通常将实现同一个具体功能的程序代码放到一个package中 xff0c 比如实现相机数据采集这一功能 文件结构 CMakeLists tx
  • 坐标转换tf

    tf介绍 坐标转换 TransForm 位置和姿态 坐标变换是空间实体的位置描述 xff0c 是从一种坐标系统变换到另一种坐标系统的过程 通过建立两个坐标系统之间一一对应关系来实现下图为机器人几个部件之间的坐标关系 tf概念 tf是一个用户
  • 经典Windows编程书单

    说好的这次写一个图形编程书单 但是看起来不是很好整理 xff0c 这类书散落的家里到处都是 先把经典Windows编程的书整理一下吧 xff0c 不过Windows的也到处都是很多都找不到了 xff0c 只能把找到的拍个照 xff0c 可能
  • vscode设置C++代码格式化(Clang-Format)

    vscode中只要安装了C C 43 43 扩展后 xff0c 在C C 43 43 源文件中右键就能看到格式化文档的选项 xff0c 这样就能通过该选项或者其快捷键 xff08 Shift 43 Alt 43 F xff09 来实现快速格
  • git pull覆盖了本地未push的代码解决方案

    一 问题背景 情况 xff1a 本地代码写完后 xff0c git push上去github xff0c 然后报错 xff0c 提示要先git pull pull之后 xff0c 失败了或者覆盖了本地未push的代码 二 解决方案 2 1
  • FreeRTOS任务调度原理

    1 FreeRTOS的列表和列表项 列表和列表项是FreeRTOS中一个非常重要的数据结构 xff0c 是FreeRTOS的基石 要想看懂FreeRTOS的源码并学习其中的原理 xff0c 我们必须先了解一下这个数据结构 这个数据结构也是和
  • Go语言学习教程(十四)

    一 反射介绍 在Go语言标准库中reflect包提供了运行时反射 程序运行过程中动态操作结构体 当变量存储结构体属性名称 想要对结构体这个属性赋值或查看时 就可以使用反射 反射还可以用作判断变量类型 整个reflect包中最重要的两个类型
  • 正点原子FPGA学习笔记4.4——UART串口通信,基于达芬奇开发板 A7

    目录 1 环回模块 协调发送接收模块 0 综上 xff0c 信号线如下 xff1a 1 捕捉发送模块传过来recv done信号的上升沿 得到recv done flag 2 recv done flag拉高 xff0c 接收了一帧数据 x
  • UBUNTU 下面的DOCKER使用图形界面

    ubuntu下docker容器中开启图形界面 xff1a 转载自 xff1a https blog csdn net ericcchen article details 79253416 方法一 xff1a 开启SSH服务 详细开启流程 x
  • unbuntu 16.04中编译ffmpeg

    1 xff1a 解压 xff1a sudo tar jxvf ffmpeg 3 4 tar gz2 2 xff1a 更新安装 xff1a sudo apt get update 3 xff1a 安装依赖包 xff1a sudo apt ge
  • git仓库命名规范

    git仓库命名规范 对于git仓库 xff0c 对于git仓库 xff0c 名字不可用下述规定的字符 64 amp xff0c lt gt 43 61 这些字符git不认可 xff0c 默认转成 输入 也会显示转换成 xff0c 如下图所示
  • px4之nuttx操作系统编译

    nuttx 嵌入式操作系统 1 下载源码 https nuttx apache org download 分别下载app和os 下载完毕后 xff0c 解压两个压缩包 2 根据当前嵌入式的开发板子 xff0c 进行配置 span class
  • Ubuntu18.04 安装ROS以及汇总rosdep init与rosdep update执行失败的解决方案

    一 前言 我已经装了不知道多少次ROS xff0c 由于学习需要 xff0c 又一次给新机安装ROS xff0c 还是被安装出错折磨了半天 吃一堑长一智 xff0c 为了防止再次安装时要费时全网搜索解决方案 xff0c 本文准备自己记录一下
  • ROS学习01-NVIDIA JETSON TX2 使用Jetpack4.4刷机指南

    ROS学习01 NVIDIA JETSON TX2 使用Jetpack4 4刷机指南 写在前文 最近入手了一台NVIDIA JETSON TX2想做个机器人小车 xff0c 刚拿到板子的时候发现他上面自带安装的是Ubuntu18 04 xf
  • pytorch: 计算网络模型的计算量(FLOPs)和参数量(Params)

    计算量 xff1a FLOPS xff0c 浮点运算次数 xff0c 指运行一次网络模型需要进行浮点运算的次数 参数量 xff1a Params xff0c 是指网络模型中需要训练的参数总数 第一步 xff1a 安装模块 xff08 tho
  • ROS学习02-拿到NVIDIA JETSON TX2该做些什么

    ROS学习02 拿到NVIDIA JETSON TX2该做些什么 在前一片文章中我们已经将NVIDIA JETSON TX2完美的刷机了 ROS学习01 NVIDIA JETSON TX2 使用Jetpack4 4刷机指南 刷完机后连上显示
  • ROS学习09-NVIDIA JETSON TX2安装配置TOF摄像头Intel® RealSense™ Tracking Camera T265

    ROS学习09 NVIDIA JETSON TX2安装配置TOF摄像头Intel RealSense Tracking Camera T265 这一节继续准备我们机器人的器官 xff0c 在惯性导航方面我们选择了Intel RealSens
  • ROS学习12-NVIDIA JETSON TX2 使用turtlebot3 gazebo模拟仿真机器人

    ROS学习12 NVIDIA JETSON TX2 使用turtlebot3 gazebo模拟仿真机器人 这一节我们要使用turtlebot3搭建一个仿真的机器人及环境 xff0c 这里是基于ROS1中的melodic版本 首先安装turt

随机推荐

  • 全方位移动全向轮、麦克纳姆轮底盘运动学逆解详解(内含电机输出方程)

    全方位移动全向轮 麦克纳姆轮底盘运动学逆解详解 xff08 内含电机输出方程 xff09 开始输出方程介绍定义底盘布局快速计算函数主函数最后 开始 智能小车全方位移动底盘常用包括 xff1a 全向轮底盘 xff0c 麦克纳姆轮底盘 xff0
  • 程序员3年5年10年三个阶段

    第一阶段 三年 三年对于程序员来说是第一个门槛 xff0c 这个阶段将会淘汰掉一批不适合写代码的人 这一阶段 xff0c 我们走出校园 xff0c 迈入社会 xff0c 成为一名程序员 xff0c 正式从书本上的内容迈向真正的企业级开发 我
  • CompletableFuture使用示例

    不进行异常处理 1 runAsync 无返回值 supplyAsync 有返回值 根据idea的提示和变量的范型也能看出来 runAsync 是不返回值的 而supplyAsync则会把比较的结果返回出去 2 thenApply thenA
  • 《Linux驱动:USB设备驱动看这一篇就够了》

    文章目录 一 xff0c 前言二 xff0c USB子系统2 1 USB驱动基础概念2 1 1 USB版本2 1 2 USB主从结构2 1 3 USB的传输类型2 1 4 USB设备描述符2 1 4 1 设备描述符2 1 4 2 配置描述符
  • ModbusPoll和ModbusSlave理解及模拟器ModbusTcp一对一和一对多通讯

    目录 ModbusPoll和ModbusSlave理解 Modbus总概 xff1a 主从区分 xff1a 模拟器简介 xff1a ModbusTcp一对一通讯 ModbusTcp一对多通讯 ModbusPoll和ModbusSlave理解
  • SpringSecurity关于关闭csrf后导致页面元素消失的问题及处理方法

    在学习SpringSecurity时进行自定义登录页面的编写时 xff0c 由于在学习的过程中暂时用不到csrf防护 xff0c 不关闭的话后面可能会因为没考虑csrf防护而遇到一连串的问题 xff0c 且关闭后直接使用GET请求也可以退出
  • 机器人开发ros初识

    首先 xff0c 采用ros系统的机器人一般都是有上位机和下位机的 xff0c 下位机以arduino为例 xff0c 负责订阅上位机发送的topic xff0c 获取信息后通过设计的代码进行相应处理控制硬件 xff0c 比如移动 xff0
  • 使用Python+requests简单实现模拟登录以及抓取接口数据

    前言 xff1a 说起爬虫这个东西 xff0c 大学时我习惯用PHP 43 CURL来实现 xff0c 后来用Java 43 WebMagic来实现 如今刚接触一下Python xff0c 开始了解一下Python的语法和框架等 xff0c
  • 常用数据集网盘免费下载(转载)

    List item 遥感影像库 链接 xff1a https pan baidu com s 1bGLRZo 密码 xff1a ic0t facebook大数据 链接 xff1a https pan baidu com s 1geGBLb9
  • C++连接MySQL 操作的封装

    以前写过一篇 c 43 43 连接mysql 的博客 xff0c 每次都要写类来封装数据库的操作函数 xff0c 参考一位大佬的封装 xff0c 不说了 xff0c 直接上代码 xff1a 头文件如下 xff1a pragma once i
  • C++11 线程池的使用

    本文主要介绍C 43 43 中线程池的实现以及C 43 43 11中新特性 仿函数 线程 互斥量 原子 条件变量等 的使用 xff0c 最终会实现一个简易的线程池 xff0c 可支持传参不传参等任务 目录 一 线程池的用途 1 线程池的作用
  • ubuntu 首次安装后配置开发环境

    目录 1 配置root 密码 2 安装SSH 3 安装网络 4 安装和配置 vim 5 配置C 43 43 开发环境 6 安装代码管理工具 git 6 1 配置邮箱和用户名 7 多用户与图形界面切换 1 配置root 密码 sudo pas
  • window11 无法切换输入法打印不出汉字问题修改

    1 xff09 按 WINDOW 43 R 键启动cmd 窗口 2 xff09 在cmd窗口中输入 services msc 启动服务窗口 3 xff09 找到 TextInputManagementService xff0c 开启即可
  • 在c++中字符串复制与内存复制之间的区别

    1 编程实现strcpy函数 字符串复制的实现 原型char strcpy char strdest const char strSrc 对于上述代码 xff0c 为什么要用char 类型呢 xff1f 为了能够链式表达式 2 内存复制函数
  • static静态变量与普通变量的区别

    1 static全局变量与普通全局变量的区别 全局变量的说明之前再加上static就构成静态全局变量 全局变量本身就是静态存储方式 xff0c 静态全局变量当然也是静态存储方式 这两者在存储方式上没有区别 区别在于 xff0c 非静态全局变
  • VS2013与数据库mysql8.0的连接

    1 准备 xff1a vs2013 mysql 8 0 1 1首先我们到官网上下载mysql 下载完成后解压 xff0c 安装 vs2013下载解压安装 2 我们打开安装后的mysql文件夹 我们一会要重点用到 include 和lib 所
  • 用VS2013中MFC开发视频播放器

    1 搭建开发环境 1 1 vs2013网上有许多软件可以自行下载或者 vs2013的安装包 有需要的留言我给发 1 2 搭建DirectShow开发环境 我参考的书上说要自己下一个DriectShow xff0c 但是我下载了好多次 xff
  • 用VS2013中MFC开发视频播放器(2)

    上一个博客我写了做视频播放器的环境搭建 xff0c 没写完这个项目 xff0c 所以今天在把它详细的写一遍流程 xff0c 介绍一下这个项目的编写 1 需求分析 xff1b 要求开发播放器系统能够播放媒体文件 xff0c 而且还可以进行播放
  • 基于正点原子探索者使用STM32CubeMX+FreeRTOS+LWIP

    开发板是使用正点原子的探索者为例 xff0c PHY芯片可以是LAN8720A和IP101GR xff0c 因为有两份代码参考 xff0c 一份是LAN8720A xff0c 一份是IP101GR 首先第一步 xff1a 我们使用移植好的功
  • C++笔试中遇到的问题

    1 sizeof与strlen的区别 xff1f 答 xff1a sizeof是操作符 xff0c 分配的数组实际所占的内存空间大小 xff0c 不受里面存储内容的影响 strlen是函数 xff0c strlen计算字符串的长度 xff0