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

代码随想录Day53|110. 字符串接龙、105.有向图的完全联通、106. 岛屿的周长

目录

    • 110. 字符串接龙
      • 解题思路
        • 解法
    • 105.有向图的完全联通
      • 解题思路
        • 解法
    • 106. 岛屿的周长
      • 解题思路
        • 解法
    • 今日总结

110. 字符串接龙

题目链接:KamaCoder
文章讲解:代码随想录
视频讲解:bilibili

解题思路

  本题细节很多,因为需要求的是最短路径,用广搜的方式最为直接。使用队列记录扩散遍历对象,使用集合记录遍历过的对象,防止重复遍历陷入死循环,队列中还记录着到达该字符串的路径长度。

解法
#include <iostream>
#include <vector>
#include <unordered_set>
#include <queue>
#include <algorithm>
using namespace std;int main(){int n;cin >> n;string beginStr, endStr;cin >> beginStr >> endStr;string str;unordered_set<string> strset;for(int i=0; i<n; i++){cin >> str;strset.insert(str);}unordered_set<string> visited;queue<pair<int, string>> que;que.push(make_pair(1, beginStr));visited.insert(beginStr);while(!que.empty()){string word = que.front().second;int path = que.front().first;que.pop();int length = word.size();for(int i=0; i<length; i++){string word_amend = word;for(int j=0; j<26; j++){word_amend[i] = 'a' + j;if(word_amend[i] == word[i])continue;if(word_amend == endStr){cout << path+1 << endl;return 0;}if(strset.count(word_amend) && !visited.count(word_amend)){visited.insert(word_amend);que.push(make_pair(path+1, word_amend));}}}}cout << 0 << endl;return 0;
}
  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( n ) O(n) O(n)

105.有向图的完全联通

题目链接:KamaCoder
文章讲解:代码随想录
视频讲解:bilibili

解题思路

  相比前面的题目来说较为基础,深搜广搜均可,这里使用深搜进行寻找,访问一个节点就遍历一次,如果全部结束之后还有节点未被访问,则说明图不连通。

解法
#include <iostream>
#include <vector>
using namespace std;void dfs(int node, int n, const vector<vector<int>>& link, vector<bool>& visited){visited[node] = true;for(int j=1; j<=n; j++){if(link[node][j] && !visited[j]){dfs(j, n, link, visited);}}return ;
}int main(){int n, k;cin >> n >> k;if(k < n){cout << -1 << endl;return 0;}vector<vector<int>> link(n+1, vector<int>(n+1, 0));vector<bool> visited(n+1, false);for(int i=0; i<k; i++){int x, y;cin >> x >> y;link[x][y] = 1;}dfs(1, n, link, visited);for(int i=1; i<=n; i++){if(!visited[i]){cout << -1 << endl;return 0;        }}cout << 1 << endl;return 0; }
  • 时间复杂度: O ( n 2 ) O(n^2) O(n2)
  • 空间复杂度: O ( n 2 ) O(n^2) O(n2)

106. 岛屿的周长

题目链接:KamaCoder
文章讲解:代码随想录
视频讲解:bilibili

解题思路

  本题要计算的是岛屿的周长,也即最外围矩形的外围长度之和。对于某一个陆地单元来说,如果它与一个陆地相邻,那么对于周长的贡献就会减少1,最多可以贡献4的周长,即孤岛。这样,只要计算每个陆地的相邻陆地数量,就可以算出每个陆地单元对于周长的贡献。

解法
#include <iostream>
#include <vector>
using namespace std;int dir[4][2] = {{0,-1}, {0,1}, {1,0}, {-1,0}};int main(){int n, m;cin >> n >> m;vector<vector<int>> land(n+2, vector<int>(m+2, 0));for(int i=1; i<=n; i++)for(int j=1; j<=m; j++)cin >> land[i][j];int s=0;for(int i=1; i<=n; i++){for(int j=1; j<=m; j++){if(land[i][j]){int count = 0;for(int k=0; k<4; k++){int nextx = i + dir[k][0];int nexty = j + dir[k][1];if(land[nextx][nexty])count++;}s += 4-count;}}}if(s>0)cout << s;elsecout << 0;return 0;
}
  • 时间复杂度: O ( n m ) O(nm) O(nm)
  • 空间复杂度: O ( n m ) O(nm) O(nm)

今日总结

  补卡中()

http://www.dtcms.com/a/511752.html

相关文章:

  • 做婚恋网站这几年做哪个网站致富
  • 【案例实战】听歌学英语鸿蒙APP从零到上架全流程回顾
  • 基于频域的数字盲水印blind-watermark
  • 三、网站开发使用软件环境中小企业建站的方法
  • 开源 Linux 服务器与中间件(八)数据库--MariaDB
  • Mac OS 安装 VirtualBox
  • wordpress卡密系统源码主题站长工具查询seo
  • 宁波快速建站公司附近的装修公司地点
  • 物联网运维中的自适应网络拓扑重构技术
  • jenkins介绍与部署
  • Attention:MHA->MQA->GQA->MLA
  • 拥塞控制原理
  • Flink Kafka 生产者原理与实现
  • 路由器和机顶盒的射频核心:深入解析PA、LNA、PHY与滤波器
  • Java----set
  • python编程网站推荐郑州云帆网站设计
  • 如何做论文网站给我一个用c 做的网站
  • 青岛网站排名公司自己的网站如何让百度收录
  • MQTT主题架构的艺术:从字符串拼接走向设计模式
  • i.MAX6ULL Linux LED 字符设备驱动代码分析
  • Linux中基数树的初始化
  • 4.3 二维数组
  • 【C语言实战(40)】C语言查找算法:从基础到实战的效率进阶
  • 洛谷 P2949 [USACO09OPEN] Work Scheduling G
  • 建站公司杭州南宁制作网站服务商
  • Deepseek-ocr论文精读
  • 【完整源码+数据集+部署教程】【文件&发票】发票信息提取系统源码&数据集全套:改进yolo11-ContextGuided
  • SpringBoot+Shiro+mybatis教务管理系统源码
  • 佛山个人制作网站公司手机百度下载免费安装
  • Git 项目开发核心指南:聚焦常用语法与完整流程