C++笔试强训day34

目录

1.ISBN号码

2.kotori和迷宫

3.矩阵最长递增路径


1.ISBN号码

链接icon-default.png?t=N7T8https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5?tpId=290&tqId=39864&ru=/exam/oj

提取题意,模拟一下即可。

#include <iostream>
using namespace std;
int main() {string s;cin >> s;int n = s.size();int sum = 0;int k = 1;for (int i = 0; i < n - 1; ++i){if (s[i] != '-'){sum += (s[i] - '0') * k;++k;}}sum %= 11;if (sum == 10 && s[n - 1] == 'X' || sum == (s[n - 1] - '0'))cout << "Right" << endl;else{for (int i = 0; i < n - 1; ++i)cout << s[i];if (sum == 10)cout << 'X';elsecout << sum;}return 0;
}

2.kotori和迷宫

链接icon-default.png?t=N7T8https://ac.nowcoder.com/acm/problem/50041

BFS / DFS(宽度 / 深度 优先遍历即可)

DFS:(我写的DFS目前还是没找到为什么有测试用例过不去)

// DFS(有测试用例过不了)
#include <iostream>
using namespace std;
const int N = 35;int n, m;
int cnt = 0;
int sum = 0x3f3f3f3f;
char arr[N][N];
bool vis[N][N] = { false };
int dx[4] = { 0, 0, 1, -1 };
int dy[4] = { 1, -1, 0, 0 };void DFS(int d, int x, int y)
{if (arr[x][y] == 'e'){cnt++;sum = min(sum, d);return;}vis[x][y] = true;for (int i = 0; i < 4; ++i){int a = x + dx[i];int b = y + dy[i];if (a >= 1 && a <= n && b >= 1 && b <= m && !vis[a][b] && arr[a][b] != '*'){DFS(d + 1, a, b);}}vis[x][y] = false;
}int main()
{int x, y;cin >> n >> m;for (int i = 1; i <= n; ++i){for (int j = 1; j <= m; ++j){cin >> arr[i][j];if (arr[i][j] == 'k'){x = i;y = j;}}}DFS(0, x, y);if (cnt == 0)cout << -1;elsecout << cnt << ' ' << sum << endl;return 0;
}

 BFS:(因为可以保证第一次找到的一定是最近的)

// BFS
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
const int N = 35;
int x1, y1; // 标记起点位置
int n, m;
char arr[N][N];
int dist[N][N];
queue<pair<int, int>> q;
int dx[4] = { 0, 0, 1, -1 };
int dy[4] = { 1, -1, 0, 0 };
void bfs()
{memset(dist, -1, sizeof dist);dist[x1][y1] = 0;q.push({ x1, y1 });while (q.size()){auto [x2, y2] = q.front();q.pop();for (int i = 0; i < 4; i++){int a = x2 + dx[i], b = y2 + dy[i];if (a >= 1 && a <= n && b >= 1 && b <= m && dist[a][b] == -1 &&arr[a][b] != '*'){dist[a][b] = dist[x2][y2] + 1;if (arr[a][b] != 'e'){q.push({ a, b });}}}}
}
int main()
{cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> arr[i][j];if (arr[i][j] == 'k'){x1 = i, y1 = j;}}}bfs();int count = 0, ret = 1e9;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (arr[i][j] == 'e' && dist[i][j] != -1){count++;ret = min(ret, dist[i][j]);}}}if (count == 0) cout << -1 << endl;else cout << count << " " << ret << endl;return 0;
}

3.矩阵最长递增路径

链接icon-default.png?t=N7T8https://www.nowcoder.com/practice/7a71a88cdf294ce6bdf54c899be967a2?tpId=196&tqId=37184&ru=/exam/oj

深度优先遍历即可(DFS):

#include <cstdlib>
#include <vector>
class Solution {
public:const static int N = 1010;bool vis[N][N] = { false };int dx[4] = { 0, 0, 1, -1 };int dy[4] = { 1, -1, 0, 0 };int n, m, ret = 0;vector<vector<int>> arr;bool Check(int x, int y){for (int i = 0; i < 4; ++i){int a = x + dx[i];int b = y + dy[i];if (a >= 0 && a < n && b >= 0 && b < m && arr[x][y] < arr[a][b])return true;}return false;}void DFS(int x, int y, int d){if (!Check(x, y)){ret = max(ret, d);return;}vis[x][y] = true;for (int i = 0; i < 4; ++i){int a = x + dx[i];int b = y + dy[i];if (a >= 0 && a < n && b >= 0 && b < m && !vis[a][b] && arr[x][y] < arr[a][b]){DFS(a, b, d + 1);}}vis[x][y] = false;}int solve(vector<vector<int>>& matrix) {arr = matrix;n = matrix.size();m = matrix[0].size();for (int i = 0; i < n; ++i)for (int j = 0; j < m; ++j)DFS(i, j, 0);return ret + 1;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/333465.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

markdown画时序图的时候,如何自动显示每一条时序的序号

1: 现象描述 今天画时序图的时候&#xff0c;发现时序上面没有显示序号&#xff0c;看起来不够清晰&#xff0c;只有单纯的说明; 如下图所示 刚测试CSDN的时序图&#xff0c;默认是带序号的&#xff0c;看起来和实际使用的markdown工具有关系&#xff1b; 2&#xff1a;解决办…

2024新数据库入门教程

1.官网下载MySQL 下载Mysql链接: 点击下载mysql 下载完成后解压到某一个文件夹&#xff08;记住这个路径&#xff0c;一会要用到&#xff09; 2.配置初始化文件my.ini 在根目录下创建一个txt文件&#xff0c;名字叫my&#xff0c;文件后缀为ini 以下代码除安装目录和数…

Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】

Bug&#xff1a;Linux用户拥有r权限但无法打开文件【Linux权限体系】 0 问题描述&解决 问题描述&#xff1a; 通过go编写了一个程序&#xff0c;产生的/var/log/xx日志文件发现普通用户无权限打开 - 查看文件权限发现该文件所有者、所有者组、其他用户均有r权限 - 查看该日…

TPD-3W 系列——3W 1.5KVDC 隔离 宽范围输入,双隔离双输出 DC/DC 电源模块

TPD-3W系列产品是专门针对线路板上分布式电源系统中需要产生一组与输入电源隔离的双隔离双电源的应用场合而设计。该产品适用于&#xff1a;1&#xff09;输入电源的电压变化范围≤2&#xff1a;1 &#xff1b;2&#xff09;输入输出之间要求隔离≤1500VDC&#xff1b;3&#x…

基于生命周期评价法的农田温室气体排放估算;农田CH4和N2O排放模拟;农田碳库模型和土壤呼吸等

目录 专题一 温室气体排放模拟研究 专题二 农田CH4和N2O排放模拟 专题三 农田碳库模型和土壤呼吸 专题四 基于生命周期评价法的农田温室气体排放估算 专题五-六 基于过程模型的温室气体排放模拟 专题七 案例模拟与疑难解答 更多应用 农业是甲烷&#xff08;CH4&#xff…

有哪些和excel类似或基于excel扩展的软件?

Workfine数字化管理平台是一款易上手、便捷、高效的数字化管理工具&#xff0c;是类excel设计&#xff0c;更容易上手进行企业业务系统的搭建&#xff0c;在信息记录和表格管理方面&#xff0c;比excel更简单易用&#xff0c;在这里&#xff0c;给大家挑几个点展示下~ 首先表格…

算法入门----小话算法(1)

下面就首先从一些数学问题入手。 Q1&#xff1a; 如何证明时间复杂度O(logN) < O(N) < O(NlogN) < O(N2) < O(2N) < O(N!) < O(NN)? A&#xff1a; 如果一个以整数为参数的不等式不能很容易看出不等的关系&#xff0c;那么最好用图示或者数学归纳法。 很显…

XShell免费版的安装配置

官网下载 https://www.xshell.com/zh/free-for-home-school/ 下载地址 通过邮箱验证 新建会话 通过ssh登录树莓派 填写主机IP 点击用户身份验证 成功连接

Bootstrap5

Bootstrap5-容器 容器是Bootstrap—个基本的构建块&#xff0c;它包含、填充和对齐给定设备或视口中的內容。 Bootstrap 需要一个容器元素来包裏网站的内容 我们可以使用以下两个容器类&#xff1a; .container 类用于固定宽度并支持响应式布局的容器。.container-fluid 类用…

idea上传git命令

git init git remote add origin git add . git commit -m "标题" git push -u origin master

提取COCO 数据集的部分类

1.python提取COCO数据集中特定的类 安装pycocotools github地址&#xff1a;https://github.com/philferriere/cocoapi pip install githttps://github.com/philferriere/cocoapi.git#subdirectoryPythonAPI若报错&#xff0c;pip install githttps://github.com/philferriere…

232转Profinet网关连接霍尼韦尔扫码枪在汽车生产线的应用

232转Profinet网关是一种能够将RS232串口通信协议转换为Profinet以太网通信协议的设备。在汽车生产线上&#xff0c;使用232转Profinet网关连接霍尼韦尔扫码枪&#xff0c;可以显著提高生产效率和数据管理的准确性。232转Profinet网关允许霍尼韦尔扫码枪通过串口连接到网关&…

Java 实验12 线程同步与通信

&#xff08;一&#xff09;实验目的 1、掌握JAVA中多线程的实现方法&#xff1b; 2、重点掌握多线程的同步与通信机制&#xff1b; 3、熟悉JAVA中有关多线程同步与通信的方法 &#xff1b; 4、能使用多线程机制解决实际应用中的线程同步与通信问题。 &#xff08;二&…

Java后端面经

1.可重复读&#xff0c;已提交读&#xff0c;这两个隔离级别表现的现象是什么&#xff0c;区别是什么样的&#xff1f; 可重复读&#xff1a;表示整个事务看到的事务和开启后的事务能看到的数据是一致的&#xff0c;既然数据是一致的&#xff0c;所以不存在不可重复读。而且不…

OSPF减少LSA更新量1

OSPF的LSA优化 一、汇总——优化骨干区域 (1)域间汇总ABR设备基于某个区域的1/2类LSA计算所得的最佳路由&#xff0c;共享给其他区域时&#xff0c;进行汇总传递。 [r2]ospf 1 [r2-ospf-1]area 1——明细路由所在区域&#xff0c;该ABR设备必须和明细路由在同一区域 [r2-ospf…

研二学妹面试字节,竟倒在了ThreadLocal上,这是不要应届生还是不要女生啊?

一、写在开头 今天和一个之前研二的学妹聊天&#xff0c;聊及她上周面试字节的情况&#xff0c;着实感受到了Java后端现在找工作的压力啊&#xff0c;记得在18&#xff0c;19年的时候&#xff0c;研究生计算机专业的学生&#xff0c;背背八股文找个Java开发工作毫无问题&#x…

【简单介绍下线性回归模型】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

【FPGA】Verilog:2-bit 二进制比较器的实现(2-bit binary comparator)

解释 2-bit 二进制比较器仿真结果及过程说明(包括真值表和卡诺图) 真值表和卡洛图如下: 2-bit Binary Comparator A1 A2 B1

SAPUI5基础知识2 - 手动创建一个SAPUI5的项目

1. 前言 在本篇文章中&#xff0c;我们将手动一步一步建立出第一个SAPUI5的 ‘Hello World!’ 项目。 2. 步骤详解 2.1 在BAS中建立Dev Space 进入SAP Business Application Studio的Dev Space Manger&#xff0c;选择创建Dev Space。 勾选HTML5 Application Template插件…

ComfyUI简单介绍

&#x1f353;什么是ComfyUI ComfyUI是一个为Stable Diffusion专门设计的基于节点的图形用户界面&#xff0c;可以通过各种不同的节点快速搭建自己的绘图工作流程。 软件打开之后是长这个样子&#xff1a; 同时软件本身是github上的一个开源项目&#xff0c;开源地址为&#…