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

笔试——Day34

文章目录

  • 第一题
    • 题目
    • 思路
    • 代码
  • 第二题
    • 题目:
    • 思路
    • 代码
  • 第三题
    • 题目:
    • 思路
    • 代码

第一题

题目

ISBN号码

在这里插入图片描述

思路

模拟 分类讨论,注意最后一位为X

代码

#include <iostream>
#include <string>
using namespace std;string str;int main() 
{cin >> str;int n = str.size();int a1 = str[0] - '0';int a2 = str[2] - '0';int a3 = str[3] - '0';int a4 = str[4] - '0';int a5 = str[6] - '0';int a6 = str[7] - '0';int a7 = str[8] - '0';int a8 = str[9] - '0';int a9 = str[10] - '0';int x = str[str.size() - 1] - '0';int y = (a1*1 + a2*2 + a3*3 + a4*4 + a5*5 + a6*6 + a7*7 + a8*8 + a9*9) % 11;if(y == 10){if(str[str.size() - 1] == 'X') cout << "Right" << endl;else{str[str.size() - 1] = 'X';cout << str << endl;}}else {if(x == y) cout << "Right" << endl;else{str[str.size() - 1] = y + '0';cout << str << endl;}}return 0;
}
// 64 位输出请用 printf("%lld")

第二题

题目:

kotori和迷宫

在这里插入图片描述

思路

BFS:当前位置没有搜过,且当前位置可以走时,加入队列

代码

#include <iostream>
#include <queue>
#include <cstring>using namespace std;
using PII = pair<int, int>;const int N = 40;
char a[N][N];
int dist[N][N];
queue<PII> q;
int n, m;
int x, y;int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};void bfs()
{memset(dist, -1, sizeof dist);dist[x][y] = 0;q.push({x, y});while(q.size()){auto [x1, y1] = q.front();q.pop();for(int k = 0; k < 4; k++){int nx = x1 + dx[k];int ny = y1 + dy[k];if(nx >= 1 && nx <= n && ny >= 1 && ny <= m && dist[nx][ny] == -1 && a[nx][ny] != '*'){dist[nx][ny] = dist[x1][y1] + 1;if(a[nx][ny] != 'e'){q.push({nx, ny});}}}}
}int main()
{cin >> n >> m;for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++){cin >> a[i][j];if(a[i][j] == 'k'){x = i, y = j;}}bfs();int res = 0, min_dist = 1e9;for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++){if(dist[i][j] != -1 && a[i][j] == 'e'){res++;min_dist = min(min_dist, dist[i][j]);}}if(res == 0) cout << "-1" << endl;else cout << res << " " << min_dist << endl;return 0;
}

第三题

题目:

矩阵最长递增路径

在这里插入图片描述

思路

DFS搜索

代码

不加“备忘录”记忆

class Solution {int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};int m, n;int maxLen; // 记录全局最长递增路径
public:int longestIncreasingPath(vector<vector<int>>& matrix) {m = matrix.size(), n = matrix[0].size();maxLen = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {dfs(matrix, i, j, 1); // 从 (i,j) 出发,当前路径长度为 1}}return maxLen;}void dfs(vector<vector<int>>& matrix, int i, int j, int currentLen) {maxLen = max(maxLen, currentLen); // 更新全局最大值for (int k = 0; k < 4; k++) {int x = i + dx[k], y = j + dy[k];if (x >= 0 && x < m && y >= 0 && y < n && matrix[x][y] > matrix[i][j]) {dfs(matrix, x, y, currentLen + 1); // 继续搜索更长的路径}}}
};

使用“备忘录”记忆


class Solution {int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};int m, n;int memo[201][201];
public:int longestIncreasingPath(vector<vector<int>>& matrix) {m = matrix.size(), n = matrix[0].size();int res = 0;for(int i = 0; i < m; i++)for(int j = 0; j < n; j++)res = max(res, dfs(matrix, i ,j));return res;}int dfs(vector<vector<int>>& matrix, int i, int j){if(memo[i][j] != 0) return memo[i][j];int res = 1;for(int k = 0; k < 4; k++){int x = i + dx[k], y = j + dy[k];if(x >= 0 && x < m && y >= 0 && y < n && matrix[x][y] > matrix[i][j])res = max(res, dfs(matrix, x , y) + 1);}memo[i][j] = res;return res;}
};

http://www.lryc.cn/news/615787.html

相关文章:

  • 亚麻云之全球加速器——CloudFront(CDN)服务入门
  • 【Docker实战】Spring Boot应用容器化
  • ShadowKV 机制深度解析:高吞吐长上下文 LLM 推理的 KV 缓存“影子”方案
  • Python爬虫-爬取政务网站的文档正文内容和附件数据
  • 【后端】Java 8 特性 `User::getId` 语法(方法引用)介绍
  • 【东枫科技】NTN-IOT 卫星互联网原型系统,高达1.6G大带宽
  • MPLS特性之PHP(Penultimate Hop Popping)
  • Android快速视频解码抽帧FFmpegMediaMetadataRetriever,Kotlin(2)
  • 【软考中级网络工程师】知识点之 DCC 深度剖析
  • 【21】OpenCV C++实战篇——OpenCV C++案例实战二十七《角度测量》
  • Perplexity 为特朗普 Truth Social 提供技术支持
  • 如何培养自己工程化的能力(python项目)
  • Pytorch深度学习框架实战教程12:Pytorch混合精度推理,性能加速147%的技术实现
  • 若依前后端分离版学习笔记(八)——事务简介与使用
  • Apache Pulsar性能与可用性优化实践指南
  • NLP---IF-IDF案例分析
  • C++高频知识点(十九)
  • 【面试场景题】异地多活改造方案
  • 【Matplotlib】中文显示问题
  • 【论文阅读】Deep Adversarial Multi-view Clustering Network
  • Docker 镜像常见标签(如 `标准`、`slim`、`alpine` 和 `noble`)详细对比
  • 随想记——excel报表
  • Linux下的软件编程——标准IO
  • 编程基础之多维数组——矩阵交换行
  • `sk_buff` 结构体详解(包含全生命周期解析)
  • 如何回收内存对象,有哪些回收算法?
  • XML 指南
  • LeetCode_字符串
  • Jenkins | 账号及权限管理
  • Pytorch深度学习框架实战教程-番外篇02-Pytorch池化层概念定义、工作原理和作用