算法-交替方向的最小路徑代價(jià)III-Dijkstra最短路徑算法
題目給你兩個(gè)整數(shù)m和n表示一個(gè)網(wǎng)格的行數(shù)和列數(shù)。你的目標(biāo)是到達(dá)單元格(m - 1, n - 1)。同時(shí)給你一個(gè)二維整數(shù)數(shù)組penalty。進(jìn)入單元格(i, j)的代價(jià)為(i 1) * (j 1)。你從單元格(0, 0)開(kāi)始最初需要支付其入口代價(jià)。進(jìn)入(0, 0)后執(zhí)行的行動(dòng)從 1 開(kāi)始編號(hào)。在每次行動(dòng)中你可以移動(dòng)到一個(gè)相鄰的單元格或者在當(dāng)前單元格等待。如果滿(mǎn)足以下條件則移動(dòng)遵循奇偶性規(guī)則在奇數(shù)編號(hào)的行動(dòng)中你向右或向下移動(dòng)。在偶數(shù)編號(hào)的行動(dòng)中你向左或向上移動(dòng)。行動(dòng)的代價(jià)由以下方式?jīng)Q定如果你遵循奇偶性規(guī)則移動(dòng)只需支付目標(biāo)單元格的入口代價(jià)。如果你在違反奇偶性規(guī)則的方向上移動(dòng)支付目標(biāo)單元格的入口代價(jià)加上penalty[i][j]其中(i, j)是你移動(dòng)前所在的單元格。如果你在單元格(i, j)中等待支付penalty[i][j]。在每次移動(dòng)或等待之后行動(dòng)編號(hào)增加 1。因此無(wú)論是否支付了懲罰代價(jià)所需遵循的奇偶性規(guī)則在每次行動(dòng)后都會(huì)交替改變。返回到達(dá)(m - 1, n - 1)所需的最小總代價(jià)。示例 1輸入m 2, n 2, penalty [[5,3],[1,4]]輸出8解釋最優(yōu)路徑為從單元格(0, 0)開(kāi)始入口代價(jià)為(0 1) * (0 1) 1。行動(dòng) 1向下移動(dòng)到單元格(1, 0)入口代價(jià)為(1 1) * (0 1) 2。行動(dòng) 2向右移動(dòng)到單元格(1, 1)入口代價(jià)為(1 1) * (1 1) 4因?yàn)檫`反了偶數(shù)奇偶性規(guī)則額外代價(jià)為penalty[1][0] 1。因此總代價(jià)為1 2 4 1 8。題解思路Dijkstra最短路徑算法模版題需要注意的是除了優(yōu)先級(jí)隊(duì)列還需要一個(gè)最小值數(shù)組維護(hù)答案舉例比如從A出發(fā)到C有兩條路徑A-C是權(quán)值是5先A-B,全值是3然后B-C,權(quán)值是4按優(yōu)先級(jí)隊(duì)列會(huì)先走A-B再走B-C權(quán)值和是7但實(shí)際上是從A-C權(quán)值是5權(quán)值最小這就需要一個(gè)最小值數(shù)組另外需要考慮的就是最小值數(shù)組維護(hù)的維度。class Solution { // 奇數(shù)下標(biāo) 1,3 對(duì)應(yīng)向右或向下 // 偶數(shù)下標(biāo) 0,2 對(duì)應(yīng)向左或向上 private static final int[][] DIRS {{0, -1}, {0, 1}, {-1, 0}, {1, 0}}; // 左右上下 private record Node(long d, int i, int j, int k) { } public long minCost(int m, int n, int[][] penalty) { long[][][] dis new long[m][n][2]; for (long[][] mat : dis) { for (long[] row : mat) { Arrays.fill(row, Long.MAX_VALUE); } } PriorityQueueNode pq new PriorityQueue((a, b) - Long.compare(a.d, b.d)); // 支付 1 的入口代價(jià) dis[0][0][1] 1; pq.offer(new Node(1, 0, 0, 1)); while (true) { Node top pq.poll(); long d top.d; int i top.i; int j top.j; int k top.k; if (i m - 1 j n - 1) { return d; } if (d dis[i][j][k]) { continue; } int p penalty[i][j]; // 原地不動(dòng) long newDis d p; if (newDis dis[i][j][k ^ 1]) { dis[i][j][k ^ 1] newDis; pq.offer(new Node(newDis, i, j, k ^ 1)); // k^1 切換行動(dòng)編號(hào)的奇偶性 } // 移動(dòng)一步 for (int idx 0; idx 4; idx) { int x i DIRS[idx][0]; int y j DIRS[idx][1]; if (0 x x m 0 y y n) { // 如果 k 和 idx 的奇偶性不同那么違反了奇偶性規(guī)則需要額外支付 p 的代價(jià) newDis d (x 1) * (y 1) (idx % 2 ^ k) * p; if (newDis dis[x][y][k ^ 1]) { dis[x][y][k ^ 1] newDis; pq.offer(new Node(newDis, x, y, k ^ 1)); // k^1 切換行動(dòng)編號(hào)的奇偶性 } } } } } }

相關(guān)新聞

基于Cucumber的UI自動(dòng)化測(cè)試框架:從BDD理念到工程實(shí)踐

基于Cucumber的UI自動(dòng)化測(cè)試框架:從BDD理念到工程實(shí)踐

1. 項(xiàng)目概述:為什么選擇Cucumber來(lái)做UI自動(dòng)化? 如果你和我一樣,在軟件測(cè)試這條路上摸爬滾打了幾年,肯定經(jīng)歷過(guò)這樣的場(chǎng)景:辛辛苦苦寫(xiě)了幾百行自動(dòng)化腳本,三個(gè)月后需求一改,腳本維護(hù)起來(lái)比重新寫(xiě)…

2026/7/31 3:44:54 閱讀更多
基于51單片機(jī)與Proteus的汽車(chē)燈光控制系統(tǒng)仿真實(shí)踐

基于51單片機(jī)與Proteus的汽車(chē)燈光控制系統(tǒng)仿真實(shí)踐

1. 項(xiàng)目概述:從仿真到實(shí)踐的汽車(chē)燈光控制最近在整理一些老項(xiàng)目的資料,翻到了當(dāng)年用51單片機(jī)做的一個(gè)汽車(chē)轉(zhuǎn)向燈控制系統(tǒng)仿真。這玩意兒雖然現(xiàn)在看技術(shù)棧有點(diǎn)“復(fù)古”,但作為理解嵌入式系統(tǒng)開(kāi)發(fā)、硬件仿真和汽車(chē)電子控制邏輯的入門(mén)項(xiàng)目&#x…

2026/7/31 3:44:54 閱讀更多
非模式生物GO富集分析:基于UniProt自建注釋庫(kù)的完整實(shí)戰(zhàn)方案

非模式生物GO富集分析:基于UniProt自建注釋庫(kù)的完整實(shí)戰(zhàn)方案

1. 項(xiàng)目概述:告別“模式生物依賴(lài)癥”做功能富集分析,尤其是GO富集,幾乎是每個(gè)做組學(xué)研究的同學(xué)繞不開(kāi)的一步。但不知道你有沒(méi)有遇到過(guò)這種尷尬:你辛辛苦苦測(cè)序、比對(duì)、拿到了幾百個(gè)差異基因,興沖沖地準(zhǔn)備用clusterProf…

2026/7/31 3:44:54 閱讀更多
3步永久保存你的微信聊天記錄:告別數(shù)據(jù)丟失的終極解決方案

3步永久保存你的微信聊天記錄:告別數(shù)據(jù)丟失的終極解決方案

3步永久保存你的微信聊天記錄:告別數(shù)據(jù)丟失的終極解決方案 【免費(fèi)下載鏈接】WeChatExporter 一個(gè)可以快速導(dǎo)出、查看你的微信聊天記錄的工具 項(xiàng)目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因手機(jī)損壞、系統(tǒng)升級(jí)或誤操作而丟失珍貴的…

2026/7/31 4:44:56 閱讀更多
當(dāng)陽(yáng)光遇見(jiàn)“充電寶”:光儲(chǔ)一體化如何重塑每一個(gè)用電場(chǎng)景的底層邏輯?

當(dāng)陽(yáng)光遇見(jiàn)“充電寶”:光儲(chǔ)一體化如何重塑每一個(gè)用電場(chǎng)景的底層邏輯?

過(guò)去十年,光伏是用一種“減法”邏輯闖入我們的視野——減少對(duì)煤炭的依賴(lài),減少電費(fèi)賬單上的數(shù)字,減少碳足跡的愧疚感。但單塊光伏板發(fā)出來(lái)的電,像山間的溪流,隨日照漲落,無(wú)法自控。今天,當(dāng)光伏與…

2026/7/31 4:44:56 閱讀更多
RAG系統(tǒng)構(gòu)建指南:檢索增強(qiáng)生成技術(shù)實(shí)踐

RAG系統(tǒng)構(gòu)建指南:檢索增強(qiáng)生成技術(shù)實(shí)踐

1. RAGOps:檢索增強(qiáng)生成系統(tǒng)的工程化實(shí)踐檢索增強(qiáng)生成(Retrieval-Augmented Generation)技術(shù)正在重塑AI應(yīng)用開(kāi)發(fā)范式。作為從業(yè)者,我親歷了從早期POC到生產(chǎn)級(jí)系統(tǒng)的完整演進(jìn)過(guò)程。RAGOps不是簡(jiǎn)單的技術(shù)堆砌,而是融合信…

2026/7/31 4:44:56 閱讀更多
濮陽(yáng)工廠目視化設(shè)計(jì)5S管理落地完整方案

濮陽(yáng)工廠目視化設(shè)計(jì)5S管理落地完整方案

在當(dāng)前制造業(yè)競(jìng)爭(zhēng)日益激烈的環(huán)境下,濮陽(yáng)工廠的目視化設(shè)計(jì)與 5S 管理落地方案在提升工廠效率、保障生產(chǎn)安全、降低成本等方面發(fā)揮著關(guān)鍵作用。系統(tǒng)性地了解相關(guān)產(chǎn)業(yè)格局,能夠幫助工廠管理者在眾多的服務(wù)商中做出更合適的選型決策。下面將從企業(yè)規(guī)模、質(zhì)量…

2026/7/31 4:44:56 閱讀更多
大語(yǔ)言模型在非驗(yàn)證領(lǐng)域的突破:創(chuàng)意寫(xiě)作與策略分析能力深度解析

大語(yǔ)言模型在非驗(yàn)證領(lǐng)域的突破:創(chuàng)意寫(xiě)作與策略分析能力深度解析

這次我們來(lái)看一個(gè)很有意思的現(xiàn)象:LLM(大語(yǔ)言模型)在非驗(yàn)證領(lǐng)域的快速進(jìn)步。很多人可能覺(jué)得LLM主要就是在問(wèn)答、對(duì)話、代碼生成這些"驗(yàn)證場(chǎng)景"下表現(xiàn)不錯(cuò),但實(shí)際上它在很多沒(méi)有標(biāo)準(zhǔn)答案的領(lǐng)域同樣在飛速發(fā)展。從最近的趨…

2026/7/31 4:44:56 閱讀更多
Multisim仿真:中心抽頭式全波整流電路

Multisim仿真:中心抽頭式全波整流電路

這次搭建的是一個(gè)簡(jiǎn)單的中心抽頭式全波整流電路。相比半波整流,它能利用交流電的兩個(gè)半周,因此輸出波形更連續(xù)。一、電路組成本次使用的元器件:交流電源:5 Vrms、50 Hz中心抽頭變壓器:10:5:5二極管:1N4007 …

2026/7/31 4:34:56 閱讀更多
HART協(xié)議詳解:05 HART現(xiàn)場(chǎng)通信實(shí)戰(zhàn)

HART協(xié)議詳解:05 HART現(xiàn)場(chǎng)通信實(shí)戰(zhàn)

第五季 HART現(xiàn)場(chǎng)通信實(shí)戰(zhàn) ——從USB-HART Modem抓包到工程診斷:讓協(xié)議知識(shí)變成維修能力 各位工業(yè)現(xiàn)場(chǎng)的工程師朋友們,大家好! 經(jīng)過(guò)前四季的系統(tǒng)學(xué)習(xí),我們已經(jīng)構(gòu)建了HART協(xié)議的完整理論框架: 第一季:六層生命模型與本質(zhì)認(rèn)知 第二季:物理層4–20mA與FSK魔法 第三季:數(shù)…

2026/7/31 0:14:40 閱讀更多
維修工程師的示波器實(shí)戰(zhàn):02 探頭地線——示波器最大的“坑”

維修工程師的示波器實(shí)戰(zhàn):02 探頭地線——示波器最大的“坑”

第二篇:探頭地線——示波器最大的“坑” ——那根不起眼的小地線,可能比你測(cè)的信號(hào)還重要 很多工程師第一次用示波器時(shí),都會(huì)經(jīng)歷這樣一個(gè)“驚魂”時(shí)刻。 某食品廠包裝線,伺服偶發(fā)報(bào)警。年輕工程師判斷是編碼器信號(hào)受干擾,便拿出示波器認(rèn)真測(cè)量。波形一出來(lái),所有人都倒…

2026/7/31 0:14:40 閱讀更多
SAP財(cái)務(wù)核心技能:FAGLB03科目余額查詢(xún)深度解析與實(shí)戰(zhàn)指南

SAP財(cái)務(wù)核心技能:FAGLB03科目余額查詢(xún)深度解析與實(shí)戰(zhàn)指南

1. 項(xiàng)目概述:為什么科目余額查詢(xún)是SAP財(cái)務(wù)的“定盤(pán)星”?干了十幾年SAP財(cái)務(wù)顧問(wèn),我見(jiàn)過(guò)太多剛?cè)胄械呐笥?amp;#xff0c;一上來(lái)就急著學(xué)復(fù)雜的憑證過(guò)賬、月結(jié)流程,結(jié)果在第一個(gè)月結(jié)日就卡殼了。老板問(wèn)“這個(gè)月利潤(rùn)多少?”&…

2026/7/31 0:14:40 閱讀更多