日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 2065. 最大化一张图中的路径价值

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 2065. 最大化一张图中的路径价值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、題目
    • 1、題目描述
    • 2、基礎框架
    • 3、原題鏈接
  • 二、解題報告
    • 1、思路分析
    • 2、時間復雜度
    • 3、代碼詳解
  • 三、本題小知識
  • 四、加群須知

一、題目

1、題目描述

??給你一張無向圖,圖中有 nnn 個節點,節點編號從 000n?1n - 1n?1。同時給你一個下標從 000 開始的整數數組 values,其中 values[i]是第 iii 個節點的 價值 。同時給你一個下標從 000 開始的二維整數數組 edges,其中 edges[j] = [uj, vj, timej]表示節點 uj和 vj之間有一條需要 timej秒才能通過的無向邊。最后,給你一個整數 maxTime。
??合法路徑 指的是圖中任意一條從節點 0 開始,最終回到節點 0 ,且花費的總時間 不超過 maxTime秒的一條路徑。你可以訪問一個節點任意次。一條合法路徑的 價值 定義為路徑中 不同節點 的價值 之和 (每個節點的價值 至多 算入價值總和中一次)。
??請你返回一條合法路徑的 最大 價值。每個節點 至多 有 四條 邊與之相連。
??樣例輸入: values = [0,32,10,43], edges = [[0,1,10],[1,2,15],[0,3,10]], maxTime = 49
??樣例輸出: 75

2、基礎框架

  • C語言 版本給出的基礎框架代碼如下:
int maximalPathQuality(int* values, int valuesSize, int** edges, int edgesSize, int* edgesColSize, int maxTime){ }

3、原題鏈接

LeetCode 2065. 最大化一張圖中的路徑價值

二、解題報告

1、思路分析

??(1)(1)(1) 首先,每個結點有可能訪問多次,這就不可能是最短路問題。所以排除廣度優先搜索。
??(2)(2)(2) 看數據范圍:10 <= timej, maxTime <= 100,說明最多只能訪問 10 條邊(10 = 100/10),所以我們直接利用深度優先搜索進行暴力枚舉,判斷可行即可。
??(3)(3)(3) 每個節點 至多 有 四條 邊與之相連,說明每次搜索擴展狀態最多四次,再一次印證了暴力搜索的可行性,也就是 4104^{10}410

2、時間復雜度

?? 最壞時間復雜度 O(410)O(4^{10})O(410)

3、代碼詳解

#define maxn 1010typedef struct {int v;int time; }Edge;Edge E[maxn][10]; int EdgeSize[maxn]; int visited[maxn];void addEdge(int u, int v, int time) {E[u][ EdgeSize[u] ].v = v;E[u][ EdgeSize[u] ].time = time;++EdgeSize[u]; }void dfs(int* values, int n, int u, int value, int remainTime, int *ans) {int i;if(remainTime < 0) {return ;}if(u == 0) {if(value > *ans) {*ans = value;}}for(i = 0; i < EdgeSize[u]; ++i) {int v = E[u][i].v;int time = E[u][i].time;if(visited[v]) {dfs(values, n, v, value, remainTime - time, ans);}else {visited[v] = 1;dfs(values, n, v, value + values[v], remainTime - time, ans);visited[v] = 0;}} }int maximalPathQuality(int* values, int n, int** edges, int edgesSize, int* edgesColSize, int maxTime){int i;int ret = 0;for(i = 0; i < n; ++i) {EdgeSize[i] = 0;visited[i] = 0;}for(i = 0; i < edgesSize; ++i) {addEdge( edges[i][0], edges[i][1], edges[i][2] );addEdge( edges[i][1], edges[i][0], edges[i][2] );}visited[0] = 1;dfs(values, n, 0, values[0], maxTime, &ret);return ret; }

三、本題小知識

??當一個問題沒有任何思路的時候,我們可以嘗試去看下數據范圍,看看能不能找到一些心得思路。


四、加群須知

??相信看我文章的大多數都是「 大學生 」,能上大學的都是「 精英 」,那么我們自然要「 精益求精 」,如果你還是「 大一 」,那么太好了,你擁有大把時間,當然你可以選擇「 刷劇 」,然而,「 學好算法 」,三年后的你自然「 不能同日而語 」
??那么這里,我整理了「 幾十個基礎算法 」 的分類,點擊開啟:

🌌《算法入門指引》🌌
??如果鏈接被屏蔽,或者有權限問題,可以私聊作者解決。

??大致題集一覽:













??為了讓這件事情變得有趣,以及「 照顧初學者 」,目前題目只開放最簡單的算法 「 枚舉系列 」 (包括:線性枚舉、雙指針、前綴和、二分枚舉、三分枚舉),當有 一半成員刷完 「 枚舉系列 」 的所有題以后,會開放下個章節,等這套題全部刷完,你還在群里,那么你就會成為「 夜深人靜寫算法 」專家團 的一員。
??不要小看這個專家團,三年之后,你將會是別人 望塵莫及 的存在。如果要加入,可以聯系我,考慮到大家都是學生, 沒有「 主要經濟來源 」,在你成為神的路上,「 不會索取任何 」
??🔥聯系作者,或者掃作者主頁二維碼加群,加入刷題行列吧🔥


🔥讓天下沒有難學的算法🔥
C語言免費動漫教程,和我一起打卡! 🌞《光天化日學C語言》🌞
讓你養成九天持續刷題的習慣 🔥《九日集訓》🔥
入門級C語言真題匯總 🧡《C語言入門100例》🧡
組團學習,抱團生長 🌌《算法零基礎100講》🌌
幾張動圖學會一種數據結構 🌳《畫解數據結構》🌳
競賽選手金典圖文教程 💜《夜深人靜寫算法》💜

總結

以上是生活随笔為你收集整理的LeetCode 2065. 最大化一张图中的路径价值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。