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

day54|110.字符串接龙, 105.有向图的完全可达性, 106.岛屿的周长

110.字符串接龙

110. 字符串接龙 (kamacoder.com)

#include<iostream>
#include<vector>
#include<unordered_set>
#include<unordered_map>
#include<string>
#include<queue>using namespace std;int main(){int n = 0;cin >> n;string beginStr, endStr, strMid;cin >> beginStr >> endStr;unordered_set<string> strList;for(int i = 0; i < n; i++){cin >> strMid;strList.insert(strMid);}unordered_map<string, int> strMap;  // 访问到字符串str1时的长度queue<string> strQue;strQue.push(beginStr);strMap[beginStr] = 1;while(!strQue.empty()){string strFront = strQue.front();strQue.pop();int strSize = strFront.size();for(int i = 0; i < strSize; i++){string prevStr = strFront;for(int j = 0; j < 26; j++){strFront[i] = j + 'a';if(strFront == endStr){cout << strMap[prevStr] + 1 << endl;return 0;}if(strList.count(strFront) && !strMap.count(strFront)){  // 要求有且没被用过,可以保证每次到str的长度是最短的strMap[strFront] = strMap[prevStr] + 1; strQue.push(strFront);}}strFront = prevStr;}}cout << 0;return 0;}

105.有向图的完全可达性

105. 有向图的完全可达性 (kamacoder.com)

#include <iostream>
#include <vector>
#include <queue>
#include <unordered_set>using namespace std;int main()
{int n = 0, k = 0;cin >> n >> k;vector<queue<int>> map(n + 1);for (int i = 0; i < k; i++){int start = 0, end = 0;cin >> start >> end;map[start].push(end);}unordered_set<int> record;queue<int> que;que.push(1);record.insert(1);while (!que.empty()){int curTop = que.front();que.pop();while (!map[curTop].empty()){int queTop = map[curTop].front();map[curTop].pop();if (record.count(queTop))  // 去重{continue;}record.insert(queTop);que.push(queTop);}}for (int i = 2; i <= n; i++){if (!record.count(i)){cout << -1 << endl;return 0;}}cout << 1 << endl;return 0;
}

106.岛屿的周长

106. 岛屿的周长 (kamacoder.com)

#include<iostream>
#include<vector>using namespace std;
int ans = 0; // 记录周长
int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};void dfs(int x, int y, vector<vector<int>> &visited, vector<vector<int>> &island, int n, int m){visited[x][y] = 1;for(int i = 0; i < 4; i++){int nextX = x + dir[i][0];int nextY = y + dir[i][1];if(nextY < 0 || nextX < 0 || nextY >= m || nextX >= n || island[nextX][nextY] == 0){ans++;continue;}if(visited[nextX][nextY] == 0){dfs(nextX, nextY, visited, island, n, m);}}
}int main(){int n = 0, m = 0;cin >> n >> m;vector<vector<int>> island(n, vector<int>(m));vector<vector<int>> visited(n, vector<int>(m));for(int i = 0;i < n; i++){for(int j = 0; j < m; j++){cin >> island[i][j];}}for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){if(island[i][j] != 0 && visited[i][j] == 0)dfs(i, j, visited, island, n, m);}}cout << ans << endl;return 0;
}

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

相关文章:

  • 使用docker在CentOS 7上安装php+mysql+nginx环境教程并运行WordPress
  • vite tsx项目的element plus集成 - 按需引入踩坑
  • Android GreenDao 升级 保留旧表数据
  • 记一次证书站有趣的SQL注入
  • 1_初识pytorch
  • c++typeid()的使用
  • 【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十四)-租云服务器及配环境、docker基本命令
  • 实现一个全栈模糊搜索匹配的功能
  • 智慧景区导览系统小程序开发
  • HIVE调优方式及原因
  • deploy local llm ragflow
  • 测桃花运(算姻缘)的网站系统源码
  • 电商平台优惠券
  • 内衣洗衣机多维度测评对比,了解觉飞、希亦、鲸立哪款内衣洗衣机更好
  • 数据结构和算法入门
  • 基于OpenCV C++的网络实时视频流传输——Windows下使用TCP/IP编程原理
  • (BS ISO 11898-1:2015)CAN_FD 总线协议详解6- PL(物理层)规定3
  • docker环境下php安装扩展步骤 以mysqli为例
  • 医院综合绩效核算系统,绩效核算系统源码,采用springboot+avue+MySQL技术开发,可适应医院多种绩效核算方式。
  • ROOM数据快速入门
  • 刷新,前面接口的返回值没有到,第二个接口已经请求完了,导致第二个接口返回数据错误
  • pdcj设计
  • 【数据结构】哈希表的模拟实现
  • 面试经典算法150题系列-数组/字符串操作之多数元素
  • 海南云亿商务咨询有限公司领航抖音电商服务
  • C#初级——继承
  • Github 2024-07-29 开源项目日报 Top10
  • nginx反向代理和负载均衡+安装jdk-22.0.2
  • 软考高级科目怎么选?软考高级含金量排序
  • 【机器学习西瓜书学习笔记——模型评估与选择】