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

【周赛第69期】满分题解 软件工程选择题 枚举 dfs

目录

  • 选择题
    • 1.
    • 2.
    • 3.
    • 4.
    • 面向对象设计七大原则
  • 编程题
    • S数
    • 最小H值

昨晚没睡好,脑子不清醒,痛失第1名

选择题

1.

关于工程效能,以下哪个选项可以帮助提高团队的开发效率?
A、频繁地进行代码审查
B、使用自动化测试工具
C、使用版本控制系统
D、所有选项都正确

选D。

2.

以下哪个选项不属于编码规范的内容?
A、变量命名规则
B、注释规范
C、代码缩进和格式化
D、数据库表设计

选D。

3.

以下哪个设计原则鼓励我们在实现功能时,尽量对现有代码进行扩展而不是修改?
A、单一职责原则
B、开放封闭原则
C、里氏替换原则
D、接口隔离原则

选B。

4.

关于软件架构设计,以下哪个原则可以帮助我们降低系统的耦合度?
A、单一职责原则
B、开放封闭原则
C、里氏替换原则
D、依赖倒置原则

选D。

面向对象设计七大原则

开闭原则、里氏代换原则、迪米特原则(最少知道原则)、单一职责原则、接口分隔原则、依赖倒置原则、组合/聚合复用原则。

编程题

S数

如果一个正整数 自身是回文数 ,而且它也是一个 回文数平方,那么我们称这个数为 S数。 现在,给定两个正整数
L 和 R(以字符串形式表示),返回包含在范围 [L, R] 中的S数的数目。

我是按自身是回文数枚举的,其实应该按枚举量少的进行枚举,按开平方后的回文数枚举应该会更快。
为了代码简单写的快最后再检查范围。

#include<bits/stdc++.h>using namespace std;
using LL = long long;
LL L, R;
int strL[20], strR[20];
int topL, topR;
LL ans = 0;
int str[20];bool check(int x) {int s[20] = {};int len = 0;while (x) {s[++len] = x % 10;x /= 10;}for (int i = 1, j = len; i < j; i++, j--) {if (s[i] != s[j])return false;}return true;
}void dfs(LL now, int step, int base, int len) {if (step == base + 1) {if (len & 1) {for (int i = base - 1; i >= 1; i--) {now = now * 10 + str[i];}} else {for (int i = base; i >= 1; i--) {now = now * 10 + str[i];}}if (now < L)return;if (now > R) {cout << ans << endl;exit(0);}LL tmp = sqrt(now);if (tmp * tmp == now && check(tmp)) {++ans;}if ((tmp + 1) * (tmp + 1) == now && check(tmp + 1)) {//cout<<" "<<now<<endl;++ans;}return;}if (step == 1) {static const int f[] = {0, 1, 4, 5, 6, 9};for (int i = 0; i < 6; i++) {str[step] = f[i];dfs(now * 10 + f[i], step + 1, base, len);}} else {for (int i = 0; i <= 9; i++) {str[step] = i;dfs(now * 10 + i, step + 1, base, len);}}
}int main() {cin >> L >> R;for (int i = L; i; i /= 10) {strL[++topL] = i % 10;}for (int i = R; i; i /= 10) {strR[++topR] = i % 10;}for (int len = topL; len <= topR; len++) {int baseLen = (len + 1) / 2;dfs(0, 1, baseLen, len);}cout << ans << endl;return 0;
}

最小H值

给你一个二维 rows x columns 的地图 heights , 其中 heights[row][col] 表示格子 (row,
col) 的高度。 一开始你在最左上角的格子 (0, 0) , 且你希望去最右下角的格子 (rows-1, columns-1)
(注意下标从 0 开始编号)。 你每次可以往 上,下,左,右 四个方向之一移动,你想要找到H值最小的一条路径。 一条路径的 H值
是路径上相邻格子之间 高度差绝对值最大值 决定的。 请你返回从左上角走到右下角的最小H值。

不是只能下、右,一开始想错了。
dfs需要注意避免不必要的重复,才能保证时间复杂度。

#include<bits/stdc++.h>using namespace std;
string mp;
int hang = -1;
int lie = 1;
vector<vector<int>> mpp;
vector<vector<int>> dis;inline char getChar() {static int pos = 0;if (pos == (int) mp.length()) {return EOF;}return mp[pos++];
}inline int getInt() {int x = 0;int f = 1;char t = getChar();while (t > '9' || t < '0') {if (t == '-')f = -1;t = getChar();}while (t >= '0' && t <= '9') {x = x * 10 + t - '0';t = getChar();}return x * f;
}const int f[4][2] = {{-1, 0},{0,  -1},{0,  1},{1,  0}};bool dfs(int x, int y) {if (x == hang - 1 && y == lie - 1) {return true;}for (int i = 0; i < 4; i++) {int nx = x + f[i][0];int ny = y + f[i][1];if (nx < 0 || ny < 0 || nx >= hang || ny >= lie) { continue; }int newDis = max(dis[x][y], abs(mpp[x][y] - mpp[nx][ny]));if (dis[nx][ny] != -1 && dis[nx][ny] <= newDis) { continue; }dis[nx][ny] = newDis;//cout<<nx<<" "<<ny<<" : "<<newDis<<endl;dfs(nx, ny);}return true;
}int main() {cin >> mp;for (int i = 0; i < (int) mp.length(); i++) { if (mp[i] == '[') { ++hang; }}for (int i = 0; i < (int) mp.length(); i++) {if (mp[i] == ']') { break; }if (mp[i] == ',') { ++lie; }}mpp = vector<vector<int>>(hang, vector<int>(lie, 0));vector<vector<int>> dp = vector<vector<int>>(hang, vector<int>(lie, 0));dis = vector<vector<int>>(hang, vector<int>(lie, -1));for (int nowH = 0, nowL = 0; nowH <hang;) {mpp[nowH][nowL] = getInt();//cout<<nowH<<" "<<nowL<<" : "<<mpp[nowH][nowL]<<endl;++nowL;if (nowL == lie) {++nowH;nowL = 0;}}for (int i = 0; i < hang; i++) {for (int j = 0; j < lie; j++) {if (i == 0 && j == 0) {dp[i][j] = 0;} else if (i == 0) {dp[i][j] = max(dp[i][j - 1], abs(mpp[i][j] - mpp[i][j - 1]));} else if (j == 0) {dp[i][j] = max(dp[i - 1][j], abs(mpp[i][j] - mpp[i - 1][j]));} else {dp[i][j] = min(max(dp[i][j - 1], abs(mpp[i][j] - mpp[i][j - 1])),max(dp[i - 1][j], abs(mpp[i][j] - mpp[i - 1][j])));}}}dis[0][0] = 0;dfs(0, 0);cout << dis[hang - 1][lie - 1] << endl;return 0;
}

相关文章:

【周赛第69期】满分题解 软件工程选择题 枚举 dfs

目录 选择题1.2.3.4.面向对象设计七大原则 编程题S数最小H值 昨晚没睡好&#xff0c;脑子不清醒&#xff0c;痛失第1名 选择题 1. 关于工程效能&#xff0c;以下哪个选项可以帮助提高团队的开发效率&#xff1f; A、频繁地进行代码审查 B、使用自动化测试工具 C、使用版本控…...

P2015 二叉苹果树

P2015 二叉苹果树 类似于带限制背包问题&#xff0c;但不知道也能做。 n , q n,q n,q 范围小&#xff0c;大胆设 dp 状态。设 f u , i \large f_{u,i} fu,i​ 表示 u u u 子树内保留 i i i 根树枝的最大苹果数&#xff0c;可得状态转移方程 f u , i f u , j f v , i − …...

Linux 内核音频数据传递主要流程

Linux 用户空间应用程序通过声卡驱动程序&#xff08;一般牵涉到多个设备驱动程序&#xff09;和 Linux 内核 ALSA 框架导出的 PCM 设备文件&#xff0c;如 /dev/snd/pcmC0D0c 和 /dev/snd/pcmC0D0p 等&#xff0c;与 Linux 内核音频设备驱动程序和音频硬件进行数据传递。PCM 设…...

torch.device函数

torch.device 是 PyTorch 中用于表示计算设备&#xff08;如CPU或GPU&#xff09;的类。它允许你在代码中指定你希望在哪个设备上执行张量和模型操作&#xff0c;本文主要介绍了 torch.device 函数的用法和功能。 本文主要包含以下内容&#xff1a; 1.创建设备对象2.将张量和模…...

火车头采集器AI伪原创【php源码】

大家好&#xff0c;本文将围绕python作业提交什么文件展开说明&#xff0c;python123怎么提交作业是一个很多人都想弄明白的事情&#xff0c;想搞清楚python期末作业程序需要先了解以下几个事情。 火车头采集ai伪原创插件截图&#xff1a; I have a python project, whose fold…...

Python中常见的6种数据类型

数字&#xff08;Numbers&#xff09;&#xff1a;数字类型用于表示数值&#xff0c;包括整数&#xff08;int&#xff09;和浮点数&#xff08;float&#xff09;。 字符串&#xff08;Strings&#xff09;&#xff1a;字符串类型用于表示文本&#xff0c;由一系列字符组成。字…...

消息队列项目(2)

我们使用 SQLite 来进行对 Exchange, Queue, Binding 的硬盘保存 对 Message 就保存在硬盘的文本中 SQLite 封装 这里是在 application.yaml 中来引进对 SQLite 的封装 spring:datasource:url: jdbc:sqlite:./data/meta.dbusername:password:driver-class-name: org.sqlite.…...

解决MAC M1处理器运行Android protoc时出现的错误

Protobuf是Google开发的一种新的结构化数据存储格式&#xff0c;一般用于结构化数据的序列化&#xff0c;也就是我们常说的数据序列化。这个序列化协议非常轻量级和高效&#xff0c;并且是跨平台的。目前&#xff0c;它支持多种主流语言&#xff0c;比传统的XML、JSON等方法更具…...

C#使用SnsSharp实现鼠标键盘钩子,实现全局按键响应

gitee下载地址&#xff1a;https://gitee.com/linsns/snssharp 一、键盘事件&#xff0c;使用SnsKeyboardHook 按键事件共有3个&#xff1a; KeyDown(按键按下) KeyUp(按键松开) KeyPress(按键按下并松开) 以KeyDown事件为例&#xff0c;使用代码如下&…...

Zookeeper基础操作

搭建Zookeeper服务器 windows下部署 下载地址: https://mirrors.cloud.tencent.com/apache/zookeeper/zookeeper-3.7.1/ 修改配置文件 打开conf目录&#xff0c;将 zoo_sample.cfg复制一份&#xff0c;命名为 zoo.cfg打开 zoo.cfg&#xff0c;修改 dataDir路径&#xff0c…...

【CSS】说说响应式布局

目录 一、是什么 二、怎么实现 1、媒体查询 2、百分比 3、vw/vh 4、小结 三、总结 一、是什么 响应式设计简而言之&#xff0c;就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。 响应式网站常见特点&#xff1a; 同时适配PC 平板 手机等…...

数据结构 | 利用二叉堆实现优先级队列

目录 一、二叉堆的操作 二、二叉堆的实现 2.1 结构属性 2.2 堆的有序性 2.3 堆操作 队列有一个重要的变体&#xff0c;叫作优先级队列。和队列一样&#xff0c;优先级队列从头部移除元素&#xff0c;不过元素的逻辑顺序是由优先级决定的。优先级最高的元素在最前&#xff…...

Javascript怎样阻止事件传播?

在 JavaScript 中&#xff0c;可以使用事件对象的方法来阻止事件传播。事件传播指的是当一个元素上触发了一个事件&#xff0c;该事件会在事件流中传播到父元素或祖先元素&#xff0c;从而影响到它们。 事件传播有三个阶段&#xff1a;捕获阶段、目标阶段和冒泡阶段。阻止事件…...

web-csrf

目录 CSRF与XSS的区别&#xff1a; get请求 原理&#xff1a; pikachu为例 post请求 pikachu为例 CSRF与XSS的区别&#xff1a; CSRF是借用户的权限完成攻击&#xff0c;攻击者并没有拿到用户的权限&#xff0c;而XSS是直接盗取到了用户的权限 get请求 原理&#xff1a;…...

数据结构—图的存储结构

6.图 回顾&#xff1a;数据的逻辑结构 集合——数据元素间除 “同属于一个集合” 外&#xff0c;无其他关系。 线性结构——一个对一个&#xff0c;如线性表、栈、队列 树形结构——一个对多个&#xff0c;如树 图形结构——多个对多个&#xff0c;如图 6.1图的定义和术语 图:…...

Vue3 中 setup,ref 和 reactive 的理解

setup Vue3中使用了Composition API这种写法&#xff0c;使得所有的组合API函数都在此使用, 只在初始化时执行一次。 函数如果返回对象, 对象中的属性或方法, 模板中可以直接使用 ref 作用&#xff1a;定义一个数据的响应式 语法&#xff1a;const xxx ref(initValue) 一般用来…...

BL302嵌入式ARM控制器进行SQLite3数据库操作的实例演示

本文主要讲述了在钡铼技术BL302嵌入式arm控制器上运行 SQLite3 数据库的命令示例。SQLite3 是一个轻型的嵌入式数据库&#xff0c;不需要安装数据库服务器进程&#xff0c;占用资源低且处理速度快。 首先&#xff0c;需要将对应版本的 SQLite3 文件复制到设备的 /usr/ 目录下&…...

C++ 多线程:std::future

std::future std::future 简介示例1博客引用来源 std::future 简介 我们前面介绍的std::thread 是C11中提供异步创建多线程的工具&#xff0c;只能是异步运行任务&#xff0c;却无法获取任务执行的结果&#xff0c;一般都是依靠全局对象&#xff0c;全局对象在多线程下是及其不…...

断路器回路电阻试验

试验目的 断路器回路电阻主要取决于断路器动、 静触头的接触电阻, 其大小直接影响正常 运行时的发热情况及切断短路电流的性能, 是反应安装检修质量的重要数据。 试验设备 回路电阻测试仪 厂家&#xff1a; 湖北众拓高试代销 试验接线 对于单断口的断路器, 通过断口两端的接线…...

Python中的CALL_FUNCTION指令

在Python字节码中&#xff0c;CALL_FUNCTION指令后跟的数字代表这次函数调用需要从栈上取出的参数的数量。具体来说&#xff0c;这个数字包括位置参数和关键字参数的数量。 这个数字的低两位表示位置参数的数量&#xff0c;然后每两位表示一个关键字参数的数量。因此&#xff…...

RT-Thread Nano 3.0.3移植STM32F103后,第一个实战:用FinSH组件实现串口命令行调试

RT-Thread Nano 3.0.3移植STM32F103实战&#xff1a;FinSH组件实现串口命令行调试 当你成功将RT-Thread Nano移植到STM32F103开发板后&#xff0c;第一个令人兴奋的里程碑就是让系统真正"活"起来——而FinSH组件正是实现这一目标的完美起点。这个内置的命令行交互工具…...

3分钟打造macOS级桌面体验:开源光标主题全攻略

3分钟打造macOS级桌面体验&#xff1a;开源光标主题全攻略 【免费下载链接】apple_cursor Free & Open source macOS Cursors. 项目地址: https://gitcode.com/gh_mirrors/ap/apple_cursor 你知道吗&#xff1f;每天在电脑前工作8小时&#xff0c;你的鼠标指针会出现…...

如何通过FCEUX实现NES游戏高精度模拟?解锁经典游戏的数字化体验

如何通过FCEUX实现NES游戏高精度模拟&#xff1f;解锁经典游戏的数字化体验 【免费下载链接】fceux FCEUX, a NES Emulator 项目地址: https://gitcode.com/gh_mirrors/fc/fceux 你是否曾因找不到可靠的NES模拟器而无法重温童年经典游戏&#xff1f;是否遇到过模拟器兼容…...

Hunyuan-MT-7B应用案例:国际展会AI同传助手系统后端架构设计

Hunyuan-MT-7B应用案例&#xff1a;国际展会AI同传助手系统后端架构设计 1. 项目背景与需求分析 国际展会现场的同声传译一直是技术难题。传统人工翻译成本高昂&#xff0c;且难以覆盖所有语言组合。随着多语言大模型的发展&#xff0c;AI同传系统成为可行的解决方案。 Huny…...

freertos 搭建系统框架

1.freertos官网&#xff1a;FreeRTOS™ - FreeRTOS™ &#xff0c;下载对应的freertos源码 2.freertos目录结构&#xff1a; FreeRTOS-Kernel/ ├── include/ # 内核公共头文件 ├── portable/ # 移植层&#xff08;编译器/架构相关代…...

深入浅出ESP32蓝牙HID协议:从报文解析到游戏手柄开发

深入浅出ESP32蓝牙HID协议&#xff1a;从报文解析到游戏手柄开发 在物联网设备与人机交互技术深度融合的今天&#xff0c;蓝牙HID协议已成为连接智能硬件与终端设备的重要桥梁。ESP32作为一款集成Wi-Fi和蓝牙双模通信的微控制器&#xff0c;凭借其出色的性价比和丰富的开发资源…...

MAA明日方舟自动化助手:5分钟快速上手指南

MAA明日方舟自动化助手&#xff1a;5分钟快速上手指南 【免费下载链接】MaaAssistantArknights 一款明日方舟游戏小助手 项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights MAA&#xff08;MaaAssistantArknights&#xff09;是一款专为《明日方…...

多模态扩展实验:OpenClaw+Qwen3-32B处理图片描述生成

多模态扩展实验&#xff1a;OpenClawQwen3-32B处理图片描述生成 1. 实验背景与动机 最近在探索如何将OpenClaw的自动化能力扩展到视觉领域。作为一个长期依赖文本交互的框架&#xff0c;OpenClaw能否结合多模态大模型处理图像任务&#xff1f;这引发了我的兴趣。恰好手头有台…...

省token秘籍:OpenClaw+nanobot镜像长文本处理优化方案

省token秘籍&#xff1a;OpenClawnanobot镜像长文本处理优化方案 1. 当长文本遇上大模型&#xff1a;我的token焦虑症 第一次尝试用OpenClaw处理公司三年的技术文档归档时&#xff0c;我看着账单倒吸一口凉气——单次50万token的消耗让我的个人预算瞬间见底。这促使我开始探索…...

告别设备标识混乱!用uniappx插件Ba-IdCode-U一站式获取OAID/AndroidID/IMEI(附隐私合规指南)

跨平台开发者的设备标识管理实战&#xff1a;从混乱到合规的完整解决方案 每次启动新项目时&#xff0c;开发者们是否总在纠结该用哪种设备标识&#xff1f;OAID、AndroidID还是IMEI&#xff1f;国内厂商的兼容性问题怎么解决&#xff1f;隐私合规的红线又在哪里&#xff1f;本…...