【代碼隨想錄算法訓練營第五十九天|卡碼網110.字符串接龍、105.有向圖的完全可達性、106.島嶼的周長】

文章目錄

  • 卡碼網110.字符串接龍
  • 105.有向圖的完全可達性
  • 106.島嶼的周長

卡碼網110.字符串接龍

這題是在字符串上進行廣搜,字符串廣搜是對一個字符串按照位置來搜索,與原字符串只有一個位置字符不同那么就是在原字符串的基礎上距離加1。因此需要一個字典來記錄每個字符串和beginStr的距離,然后創建一個隊列,每次對隊列第一個字符串進行廣搜,找到匹配且沒有訪問過的字符串就加入隊列尾部等待處理,并且在字典中令他的距離變成現在訪問的字符串的距離+1,直到遇見和endStr匹配的字符串輸出距離。因為廣搜是距離從小到達搜索的,所以第一次遇到和endStr匹配的就一定是最小距離。

import re
import collections
def bfs(strings, beginStr, endStr):visited = {}for string in strings:visited[string] = 1visited[beginStr] = 1st = collections.deque([beginStr])while st:temp = st.popleft()path = visited[temp]for i in range(len(beginStr)):regex = re.compile(temp[:i]+'.'+temp[i+1:])if regex.fullmatch(endStr):return path+1for s in strings:if regex.fullmatch(s) and visited[s] == 1:st.append(s)visited[s] = path + 1return 0if __name__ == '__main__':n = int(input())beginStr, endStr = input().split()strings = []for i in range(n):strings.append(input())print(bfs(strings, beginStr, endStr))

105.有向圖的完全可達性

DFS去從1開始深度搜索,搜索到的結點標注,最后如果所有結點都標注了就輸出1否則為-1。

def dfs(cur, pairs, visited):if visited[cur]==1:return visited[cur] = 1for nextNode in pairs[cur]:dfs(nextNode, pairs, visited)if __name__=='__main__':n, k = map(int, input().split())pairs = [[] for _ in range(n+1)]for i in range(k):a, b = map(int, input().split())pairs[a].append(b)visited = [0] * (n+1)dfs(1, pairs, visited)if sum(visited) == n:print(1)else:print(-1)

106.島嶼的周長

就是在之前島嶼相關題目的基礎上變形,在dfs/bfs的時候,如果遇到島嶼在往下一個區域探到海洋,那就讓周長+1,別的都一樣。

def dfs(x, y, islands, visited, perimeter):visited[x][y] = Truen = len(islands)m = len(islands[0])directions = [[1, 0], [-1, 0], [0, 1], [0, -1]]for d in directions:nextx = x + d[0]nexty = y + d[1]if nextx < 0 or nextx >= n or nexty < 0 or nexty >= m:perimeter += 1continueif islands[nextx][nexty] == 0:perimeter += 1continueif islands[nextx][nexty] == 1 and visited[nextx][nexty] == False:perimeter = dfs(nextx, nexty, islands, visited, perimeter)return perimeter
if __name__ == '__main__':n, m = map(int, input().split())islands = [[0] * m for _ in range(n)]for i in range(n):lands = input().split()for j in range(m):islands[i][j] = int(lands[j])visited = [[False] * m for _ in range(n)]for i in range(n):for j in range(m):if islands[i][j] == 1 and visited[i][j] == False:perimeter = dfs(i, j, islands, visited, 0)print(perimeter)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/web/40110.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40110.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40110.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

獲取VC賬號,是成為亞馬遜供應商的全面準備與必要條件

成為亞馬遜的供應商&#xff0c;擁有VC&#xff08;Vendor Central&#xff09;賬號&#xff0c;是眾多制造商和品牌所有者的共同目標。這不僅代表了亞馬遜對供應商的高度認可&#xff0c;也意味著獲得了更多的銷售機會和更廣闊的市場前景。 全面準備與必要條件是獲取VC賬號的關…

代碼轉換成AST語法樹移除無用代碼console.log、import

公司中代碼存在大量,因此產生 可以使用 @babel/parser 解析代碼生成 AST (抽象語法樹),然后使用 @babel/traverse 進行遍歷并刪除所有的 console.log 語句,最后使用 @babel/generator 生成修改后的代碼。 這里有一個網址,可以線上解析代碼轉換成AST語法樹: https://astex…

Python爬蟲康復訓練——筆趣閣《神魂至尊》

還是話不多說&#xff0c;很久沒寫爬蟲了&#xff0c;來個bs4康復訓練爬蟲&#xff0c;正好我最近在看《神魂至尊》&#xff0c;爬個txt文件下來看看 直接上代碼 """ 神魂至尊網址-https://www.bqgui.cc/book/1519/ """ import requests from b…

【C++】 解決 C++ 語言報錯:未定義行為(Undefined Behavior)

文章目錄 引言 未定義行為&#xff08;Undefined Behavior, UB&#xff09;是 C 編程中非常危險且難以調試的錯誤之一。未定義行為發生時&#xff0c;程序可能表現出不可預測的行為&#xff0c;導致程序崩潰、安全漏洞甚至硬件損壞。本文將深入探討未定義行為的成因、檢測方法…

零基礎STM32單片機編程入門(七)定時器PWM波輸出實戰含源碼視頻

文章目錄 一.概要二.PWM產生框架圖三.CubeMX配置一個TIME輸出1KHZ&#xff0c;占空比50%PWM波例程1.硬件準備2.創建工程3.測量波形結果 四.CubeMX工程源代碼下載五.講解視頻鏈接地址六.小結 一.概要 脈沖寬度調制(PWM)&#xff0c;是英文“Pulse Width Modulation”的縮寫&…

通過營銷本地化解鎖全球市場

在一個日益互聯的世界里&#xff0c;企業必須接觸到全球各地的不同受眾。營銷本地化是打開這些全球市場的關鍵。它包括調整營銷材料&#xff0c;使其與不同地區的文化和語言細微差別產生共鳴。以下是有效的營銷本地化如何推動您的全球擴張&#xff0c;并用實際例子來說明每一點…

UrbanGPT: Spatio-Temporal Large Language Models

1.文章信息 本次介紹的文章是2024年arxiv上一篇名為《UrbanGPT: Spatio-Temporal Large Language Models》的文章&#xff0c;UrbanGPT旨在解決城市環境中的時空預測問題&#xff0c;通過大語言模型&#xff08;LLM&#xff09;的強大泛化能力來應對數據稀缺的挑戰。 2.摘要 Ur…

SQLAlchemy批量操作數據

批量插入 session.bulk_insert_mappings(ModelClass, list(dict()))批量更新 session.bulk_update_mappings(ModelClass, list(dict())

Flutter的生命周期方法

Flutter的生命周期執行時機可以分為兩個主要部分&#xff1a;Flutter本身的組件生命周期&#xff08;widget生命周期&#xff09;和平臺相關的應用程序生命周期&#xff08;APP生命周期&#xff09;。 Widget生命周期 Widget生命周期可以細分為三個階段&#xff1a; 初始化階…

centos ssh一鍵升級到9.8版本腳本

背景 前端時間暴露出ssh漏洞&#xff0c;需要將服務器ssh版本&#xff0c;目前ssh版本最新版為9.8&#xff0c;故在服務器測試&#xff0c;準備將所有服務器ssh版本升級。腳本在centos7.6上親測可用。#!/bin/bash #Author Mr zhangECHO_GREEN() {echo -e "\033[32m $1...…

昇思MindSpore學習總結九——FCN語義分割

1、語義分割 圖像語義分割&#xff08;semantic segmentation&#xff09;是圖像處理和機器視覺技術中關于圖像理解的重要一環&#xff0c;AI領域中一個重要分支&#xff0c;常被應用于人臉識別、物體檢測、醫學影像、衛星圖像分析、自動駕駛感知等領域。 語義分割的目的是對圖…

【楚怡杯】職業院校技能大賽 “Python程序開發”賽項樣題三

Python程序開發實訓 &#xff08;時量&#xff1a;240分鐘&#xff09; 中國XX 實訓說明 注意事項 1. 請根據提供的實訓環境&#xff0c;檢查所列的硬件設備、軟件清單、材料清單是否齊全&#xff0c;計算機設備是否能正常使用。 2. 實訓結束前&#xff0c;在實訓平臺提供的…

從數據到智能,英智私有大模型助力企業實現數智化發展

在數字化時代&#xff0c;數據已經成為企業最重要的資源。如何將這些數據轉化為實際的業務價值&#xff0c;是每個企業面臨的重要課題。英智利用業界領先的清洗、訓練和微調技術&#xff0c;對企業數據進行深度挖掘和分析&#xff0c;定制符合企業業務場景的私有大模型&#xf…

篩選有合并單元格的數據

我們經常會使用合并單元格&#xff0c;比如下面表格&#xff0c;因為一個部門中會有不同的員工&#xff0c;就會出現如下表格&#xff1a; 但是當按部門去篩選的時候&#xff0c;會發現并不是我們預期的結果&#xff0c;部門列有空值&#xff0c;每個部門只有第一行數據可以被…

虛幻引擎 快速的色度摳圖 Chroma Key 算法

快就完了 ColorTolerance_PxRange為容差&#xff0c;這里是0-255的輸入&#xff0c;也就是px單位&#xff0c;直接用0-1可以更快 Key為目標顏色

PySide6 實現資源的加載:深入解析與實戰案例

目錄 1. 引言 2. 加載內置資源 3. 使用自定義資源文件&#xff08;.qrc&#xff09; 創建.qrc文件 編譯.qrc文件 加載資源 4. 動態加載UI文件 使用Qt Designer設計UI 加載UI文件 5. 注意事項與最佳實踐 6. 結論 在開發基于PySide6的桌面應用程序時&…

什么是 DDoS 攻擊及如何防護DDOS攻擊

自進入互聯網時代&#xff0c;網絡安全問題就一直困擾著用戶&#xff0c;尤其是DDOS攻擊&#xff0c;一直威脅著用戶的業務安全。而高防IP被廣泛用于增強網絡防護能力。今天我們就來了解下關于DDOS攻擊&#xff0c;以及可以防護DDOS攻擊的高防IP該如何正確選擇使用。 一、什么是…

個人引導頁+音樂炫酷播放器(附加源碼)

個人引導頁音樂炫酷播放器 效果圖部分源碼完整源碼領取下期更新內容 效果圖 部分源碼 //網站動態標題開始 var OriginTitile document.title, titleTime; document.addEventListener("visibilitychange", function() {if (document.hidden) {document.title "…

極客時間 - 《Linux 性能優化實戰》

極客時間 - 《Linux 性能優化實戰》原文鏈接&#xff1a;https://time.geekbang.org/column/intro/100020901 02 | 基礎篇&#xff1a;到底應該怎么理解“平均負載”&#xff1f;在Linux系統中&#xff0c;當一個進程啟動時&#xff0c;操作系統會為該進程申請哪些資源&#x…

Python學習從0開始——Kaggle實踐可視化001

Python學習從0開始——Kaggle實踐可視化001 一、創建和加載數據集二、數據預處理1.按name檢查&#xff0c;處理重復值&#xff08;查重&#xff09;2.查看存在缺失值的列并處理&#xff08;缺失值處理&#xff09;2.1按行或列查看2.2無法推測的數據2.3可由其它列推測的數據 3.拆…