当前位置: 首页 > news >正文

笔试练习day4

目录

  • WY22 Fibonacci数列
    • 题目解析
      • 解法
        • 暴力解法
        • 贪心
        • 代码
  • NC242 单词搜索
    • 题目解析
      • 例子1解析
      • 例子2解析
      • 例子3解析
      • 解法
        • 深度优先遍历
        • dfs实现
        • 最终代码
  • BC140 杨辉三角
      • 解法
        • 线性dp问题
        • 代码

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐣🐣 python
🐓🐓🐓 数据结构C语言
🐔🐔🐔 C++
🐿️🐿️🐿️ 文章链接目录
🏀🏀🏀 笔试练习题

WY22 Fibonacci数列

链接WY22 Fibonacci数列

在这里插入图片描述

题目解析

这道题不是让我们求斐波那契数,而是让我们将一个数通过加或减的方式去让他变成一个斐波那契数,每次变化的绝对值为1,要求我们得到最小变化的次数

解法

我们以示例1为例子
在这里插入图片描述
N=15时只需要求出他距离那个斐波那契数最近就可以了,比如15-13=2 21-15=6,显然15距离13最近,因此输出2
在这里插入图片描述
当N=13的时候,距离应该是0,因为N就是斐波那契数

所以我们得出了一个结论就是首先我们需要判断N是否是斐波那契数,如果是就返回0,如果不是那就说明N是在两个斐波那契数中间夹着的,我们只需要求出他距离最近两个斐波那契数的最小距离就可以了

暴力解法

我们可以创建一个数组Fib来记录所有的斐波那契数,然后遍历一遍数组,找出N在哪两个数字中间,之后求出距离就可以了

贪心

我们用3个变量a b c 来记录斐波那契数,因为c=a+b,所以我们只需要先给abc都初始化就可以了
在这里插入图片描述
我们假设N=6
在这里插入图片描述
因为N是大于c=1的,在上面有说过N是要在两个斐波那契数之间夹着的(也就是5和8之间),所以abc要一直变化直到c=8,b=5,然后让c-N,N-b,最后求出最小值
在这里插入图片描述

代码
#include <iostream>
using namespace std;
int n;
int main() {cin>>n;int a=0,b=1,c=1;while(n>c){a=b;b=c;c=a+b;}cout<<min(c-n,n-b);return 0;
}

NC242 单词搜索

链接NC242 单词搜索
在这里插入图片描述

题目解析

例子1解析

在这里插入图片描述
例子1中要找到XYZZED,首先我们要先找到字符串数组中X所在的位置,这里有两个X,我们先找第一个X,找到X后可以在上下左右相邻格内去找Y,注意这里是相邻格
在这里插入图片描述

X的相邻格内正好有一个Y,找到Y后就需要在Y相邻格内去找Z
在这里插入图片描述

后面就是直接按照这个方法去找
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例子2解析

例子2有两个s
在这里插入图片描述
但是因为找到s后要在他相邻格内找出E,所以我们可以直接排除左边的s
在这里插入图片描述
s的临格有两个E,但是上面E的临格没有E,所以我们选择S的下面的E
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

例子3解析

例子3给出的字符串是XYZY
在这里插入图片描述
还是先找X,有两个X,但是我们选择上面一个
在这里插入图片描述
在这里插入图片描述
在找到Z后要注意,Z的临格确实是有Y的,但是这个Y我们已经用过了,不能在用他,所以Z的临格没有Y可以用了,因此返回 false
在这里插入图片描述

解法

深度优先遍历

首先因为这是一个二维字符数组,所以需要我们求出他的总的大小(用m表示),和一行的大小(用n表示)

因为在搜索的时候题目规定使用过的字母是不可以重复使用的,所以需要用一个bool类型的二维数组(bool vis[101][101]={0})去记录字母是否已经被使用过的

用两个方向数组(dy[4]={0,0,1,-1})和(dx[4]={1,-1,0,0})

之后用两层for循环去找第一个字母,当找到后就用dfs函数去递归展开找下一个字母

dfs实现
      bool dfs(vector<string>&board,int i,int j,string& word,int pos){if(pos==word.size()-1){return true;}vis[i][j]=true;for(int k=0;k<4;k++){int a=i+dx[k],b=j+dy[k];if(a>=0&&a<m&&b>=0&&b<n&&!vis[a][b]&&board[a][b]==word[pos+1]){if(dfs(board,a,b,word,pos+1))return true;}}vis[i][j]=false;return false;}

pos是当前搜索字母所在字符串的位置,当pos为最后一个字母的时候(\0不算),就说明已经搜索完了,就返回true

因为进入这个函数的时候board[i][j]是等于word[pos]的,所以我们需要用vis[i][j]对此时的board[i][j]进行标记

标记后需要对board[i][j]位置的上下左右进行搜索,我们用a=i+dx[k]表示x方向的下标,b=j+dy[k]表示y方向的下标

这个时候需要补充说明一下为什么dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},上面的k表示的是循环次数,意思是用for循环4次去找他上下左右的字母

k=0的时候坐标(dx,dy)=(1,0),表示的是查找字母的右边
k=1的时候坐标(dx,dy)=(-1,0),表示的是查找字母的左边
k=2的时候坐标(dx,dy)=(0,1),表示的是查找字母的下边
k=3的时候坐标(dx,dy)=(0,-1),表示的是查找字母的上边
这几个坐标中没有出现(1,1)和(-1,-1)是因为我们要找的是上下左右的位置
在这里插入图片描述
在搜索的过程中需要判断a=i+dx[k]和b=j+dy[k]的范围,0<=a<m,0<=b<n,vis[a] [b]=vis[i+dx[k]] [j+dy[k]]表示的是vis[i][j]附近的字母,我们需要判断附近的字母是否有标记过true的,如果标记过的就不考虑这个字母,此外board[a][b]还必须要等于wordpos+1

当满足上面的条件时就进行递归if(dfs(board,a,b,word,pos+1)),当括号内的条件满足时就然后true

如果在board[i][j]附近找不到word[pos+1]的字母,那就说明boar[i][j]位置找错了

这时候需要将vis[i][j]更改为false(表示虽然vis[i][j]的确是我们要找的字母,但是他附近没有我们要找的下一个字母)

最终代码
class Solution {
public:
int m,n;
bool vis[101][101]={0};
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};bool exist(vector<string>& board, string word) {
m=board.size(),n=board[0].size();
for(int i=0;i<m;i++)
{for(int j=0;j<n;j++){if(board[i][j]==word[0]){if(dfs(board,i,j,word,0))return true;}}
}
return false;}bool dfs(vector<string>&board,int i,int j,string& word,int pos){if(pos==word.size()-1){return true;}vis[i][j]=true;for(int k=0;k<4;k++){int a=i+dx[k],b=j+dy[k];if(a>=0&&a<m&&b>=0&&b<n&&!vis[a][b]&&board[a][b]==word[pos+1]){if(dfs(board,a,b,word,pos+1))return true;}}vis[i][j]=false;return false;}
};

注意m=board.size()表示的是二维数组的行数,他与以前C语言学的二维数组有点不同
例如 int arr[5][5]表示5行5列的二维数组,m=sizeof(arr)表示的是有多少个元素,也就是m=5*5=25
而上面的代码中m=board.size(),由于是vector中的size(可能内部实现不同),导致m表示的是行数

BC140 杨辉三角

链接BC140 杨辉三角
在这里插入图片描述

解法

线性dp问题

这道题根据杨辉三角的性质我们可以用二维数组去解决
所以创建一个二维数组dp[31][31],在填表的过程中,因为杨辉三角的n>=1,所以我们从dp[1][1]开始填,而dp[0]或者dp[1][0]这些就不填默认初始化为0
在这里插入图片描述
此外这样的好处还有dp[1][0]+dp[1][1]是不会影响dp[2][1]的
在这里插入图片描述
在这里插入图片描述

所以通过dp[i][j]=dp[i-1][j]+dp[i-1][j-1]就可以实现

代码
#include <iostream>
using namespace std;
int dp[31][31];
int main() {int n;cin>>n;dp[1][1]=1;for(int i=2;i<=n;i++){for(int j=1;j<=i;j++){dp[i][j]=dp[i-1][j]+dp[i-1][j-1];}}for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){printf("%5d",dp[i][j]);}cout<<"\n";}return 0;
}

注意%5d是因为题目要求输出域宽为5,用%5d打印就是不足的用空格填上

相关文章:

笔试练习day4

目录 WY22 Fibonacci数列题目解析解法暴力解法贪心代码 NC242 单词搜索题目解析例子1解析例子2解析例子3解析解法深度优先遍历dfs实现最终代码 BC140 杨辉三角解法线性dp问题代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&am…...

公主少爷都爱看的haproxy七层代理详细介绍及常见实验详解

目录 一、负载均衡 1.1什么是负载均衡 1.2为什么要实验负载均衡 1.3四层负载均衡 1.4七层负载均衡 1.5四层负载均衡和七层负载均衡的对比 二、什么是haproxy 2.1定义 2. 2功能和特点 2.3应用场景 2.4haproxy的分类 三、安装及基本配置的信息 3.1软件的安装 3.2ha…...

Android笔试面试题AI答之Kotlin(6)

文章目录 24. 以下代码执行的结果是什么&#xff1f;25. 解释一下下述Kotlin 代码有什么问题&#xff1f;26. 如何在 Kotlin 中创建常量&#xff1f;示例注意事项总结 27. Koltin 可以互换使用 IntArray 和 Kotlin 中的 Array 吗&#xff1f;IntArrayArray<Int>互换使用从…...

“tcp控制协议”的理解

情景解释&#xff1a; 1.过程&#xff1a; 在用户进行网络间通信时&#xff0c;不管是客户端还是服务端&#xff0c;都会有两个缓冲区——发送缓冲区和接受缓冲区。 通过4个缓冲区进行数据交流。 用户通过write()将数据发送到他的发送缓冲区中&#xff0c;再传输到服务端的…...

考试成绩查询系统,发成绩不再愁

在考试季落幕后&#xff0c;家长们总是怀着紧张的心情&#xff0c;期待着孩子们的成绩单。传统上&#xff0c;老师们需要手动发送成绩单给每位家长&#xff0c;这个过程不仅耗时耗力&#xff0c;而且容易出错&#xff0c;给老师们带来了不小的压力。 随着科技的进步&#xff0c…...

【扒代码】图像数据 Transformer

def forward(self, x, bboxes):# 确定对象的数量&#xff0c;如果不是零样本学习场景&#xff0c;则根据bboxes的数量确定num_objects bboxes.size(1) if not self.zero_shot else self.num_objects# backbone# 通过主干网络提取特征backbone_features self.backbone(x)# pre…...

光伏仿真系统的使用流程

为了更有效地规划设计并评估光伏电站的性能与经济性&#xff0c;光伏仿真系统应运而生。该系统通过模拟实际运行场景&#xff0c;为项目开发者提供全面的数据支持和决策依据。 1、气象数据分析 气象数据是光伏系统性能评估的基础。此阶段&#xff0c;仿真系统需收集并处理项目…...

【Dash】使用 dash_mantine_components 创建图表

一、Styling Your App The examples in the previous section used Dash HTML Components to build a simple app layout, but you can style your app to look more professional. This section will give a brief overview of the multiple tools that you can use to enhan…...

Unity 输入模块 之 初识新输入系统(其实也不新)

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​ 1.介绍 当年的宣传网页Unity新一代输入系统介绍 - 技术专栏 - Unity官方开发者社区 老输入系统每次配置新项目都需要写…...

springboot+redis集群实现集群拓扑动态刷新温故

springboot项目&#xff0c;并集成redis集群&#xff0c;当redis集群节点宕掉后又恢复了&#xff0c;但springboot调用redis集群服务报错&#xff0c;下面对springboot集成redis集群实现集群拓扑动态刷新进行温习和巩固。 原因分析&#xff1a; 使用lettuce连接redis集群实例&a…...

LoadRunner常用函数介绍

内置函数和Jmeter差不多&#xff0c;Jmeter更火&#xff0c;更好百度&#xff0c;毕竟开源&#xff0c;用的人多&#xff0c;所以有些函数如果不太懂用法&#xff0c;可以百度Jmeter作为参考来使用LR。 脚本中常用函数 事务组 lr_start_transaction("KaiShi"); //…...

通讯录管理系统

目录 一. 实验目的 二. 系统设计 三. 系统设计流程&#xff1a; 四. 实验结果及效果展示 五. 实验总结 六. 附录&#xff1a;源代码 一. 实验目的 本次实验旨在通过实现一个简单的通讯录管理系统&#xff0c;加深对C语言结构体、数组、指针、函数、控制结构等基本概念的理…...

基于Python爬虫+机器学习的长沙市租房价格预测研究

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

开发效率翻倍攻略!大学生电脑小白管理秘籍,资料秒搜技巧大公开!C盘满了怎么办?如何快速安全的清理C盘?烦人的电脑问题?一键解决!

如何正确管理自己的第一台电脑&#xff1f;大一新生如何管理自己的电脑&#xff1f;老鸟如何追求快捷操作电脑&#xff1f; 文章目录 如何正确管理自己的第一台电脑&#xff1f;大一新生如何管理自己的电脑&#xff1f;老鸟如何追求快捷操作电脑&#xff1f;前言初级基础分区操…...

[C#数据加密]——MD5、SHA、AES、RSA

一、C#数据加密介绍 数据加密是信息安全领域的一个重要组成部分&#xff0c;它用于保护数据不被未授权访问。以下是一些常见的加密算法和方法&#xff1a; 1、MD5 (Message Digest Algorithm 5): 一种广泛使用的哈希函数&#xff0c;可以产生128位的哈希值。通常用于验证文件完…...

QT不阻塞UI的方式

方法1&#xff1a;QtConcurrent #include <QtConcurrent> #include <QFuture> #include <QFutureWatcher> #include <QDebug>void longRunningTask() {// 模拟耗时操作QThread::sleep(5); }void startTask() {QFuture<void> future QtConcurre…...

鸿蒙HarmonyOS开发:常用布局及实用技巧

文章目录 一、概述二、盒子模型三、线性布局&#xff08;Column/Row&#xff09;1、space属性2、justifyContent属性3、alignItems属性 四、实用技巧1、Blank组件的使用2、layoutWeight属性的使用 一、概述 布局是指对页面组件进行排列和定位的过程&#xff0c;其目的是有效地…...

【解答】洛必达法则的使用条件及常见错误,洛必达法则的适用条件,常见的易错点,2022数一第一题例题

目录 洛必达法则的使用条件及常见错误 洛必达法则的适用条件 常见的易错点 举例说明&#xff08;见D选项&#xff09; 总结 &#x1f308; 嗨&#xff0c;我是命运之光&#xff01; &#x1f30c; 2024&#xff0c;每日百字&#xff0c;记录时光&#xff0c;感谢有你&…...

使用Python下载飞书共享表格数据教程

写在前面 随着企业协作办公软件的流行&#xff0c;飞书以其高效的协作能力和便捷的共享功能&#xff0c;成为了许多公司必备的工具之一。在日常工作中&#xff0c;我们经常需要从飞书中下载共享的表格数据进行分析。本文将详细介绍如何使用Python下载飞书共享表格数据。 前置…...

【C++】protobuf的简单使用(通讯录例子)

protobuf的简单使用&#xff08;通讯录例子&#xff09; .proto文件的编写保留字段字段唯一编号protobuf的类型enum类型Any类型oneof类型map类型完整通讯录代码.proto文件write文件read文件运行结果 .proto文件的编写 syntax用于指定protobuf的语法&#xff1b;package当.prot…...

Apple 智能基础语言模型

Introducing Apple’s On-Device and Server Foundation Models technical details June 10, 2024 在2024年的全球开发者大会上&#xff0c;苹果推出了Apple Intelligence&#xff0c;这是一个深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统。Apple Intelligen…...

GreptimeDB融资数百万美元; Oracle提供免费长期MySQL; 谷歌大模型支持云数据库问题洞察

重要更新 1. 开源时序数据库 GreptimeDB宣布完成数百万美元的新一轮融资。GreptimeDB是一款Rust 语言编写的时序数据库&#xff0c;具有分布式&#xff0c;开源&#xff0c;云原生&#xff0c;兼容性强等特点&#xff0c;帮助企业实时读写、处理和分析时序数据的同时&#xff0…...

Java中的抽象类与接口

1. 抽象类 1.1 抽象类概念 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c; 如果一个类中没有包含足够的信息来描绘一个具体的对象&#xff0c;这样的类就是抽象类。 比如&…...

云计算概念以及与云服务的区别

目录 1.云的概念 1.1 什么是云&#xff1f; 1.2 云计算的类型 1.3 云计算的服务模式 1.4 云计算的优势 2.云计算和云服务的区别 2.1 定义 2.2 范围 2.3 角色 2.5 举例 2.6使用者 3.总结 1.云的概念 1.1 什么是云&#xff1f; “云”在计算机科学和信息技术领域通常…...

Netty技术全解析:LengthFieldBaseFrameDecoder类深度解析

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…...

深入InnoDB核心:揭秘B+树在数据库索引中的高效应用

目录 一、索引页与数据行的紧密关联 &#xff08;一&#xff09;数据页的双向链表结构 &#xff08;二&#xff09;记录行的单向链表结构 二、未创建索引情况 &#xff08;一&#xff09;无索引下的单页查找过程 以主键为搜索条件 以非主键列为搜索条件 &#xff08;二…...

c++(面向对象的性质:抽象,封装,继承,多态)

ctrla全选&#xff0c;ctrli对齐 ctrl/ 一起注释 ctrlz 退回上一步 一些基础的内容&#xff1a; cout&#xff1a;输出流对象 cin&#xff1a;输入流对象 输入一个i和一个j&#xff0c;然后输出ij的和&#xff1a; 值不变的原因&#xff1a; 值传递&#xff0c;a和i是…...

java基础学习笔记1

Java编程规范 命名风格 1. 【强制】代码中的命名均不能以下划线或美元符号开始&#xff0c;也不能以下划线或美元符号结束。 反例&#xff1a;_name / __name / $name / name_ / name$ / name__ 2. 【强制】代码中的命名严禁使用拼音与英文混合的方式&#xff0c;更不允许直…...

[VBA]使用VBA在Excel中 操作 形状shape 对象

excel已关闭地图插件,对于想做 地图可视化 的,用形状来操作是一种办法,就是要自行找到合适的 地图形状,修改形状颜色等就可以用于 可视化展示不同省市销量、人口等数据。 引言 在Excel中,通过VBA(Visual Basic for Applications)可以极大地增强数据可视化和报告自动化…...

Apache POI 实现 Excel 表格下载

这里以苍穹外卖中数据导出功能为例&#xff0c;记录下 Apache POI 导出 Excel 表格的过程。 首先在 pom.xml 中导入相关依赖 <!-- poi 用于操作 excel 表格--> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId&…...