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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 656. 金币路径(DP)

發布時間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 656. 金币路径(DP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給定一個數組 A(下標從 1 開始)包含 N 個整數:A1,A2,……,AN 和一個整數 B。
你可以從數組 A 中的任何一個位置(下標為 i)跳到下標 i+1,i+2,……,i+B 的任意一個可以跳到的位置上。
如果你在下標為 i 的位置上,你需要支付 Ai 個金幣。
如果 Ai 是 -1,意味著下標為 i 的位置是不可以跳到的。

現在,你希望花費最少的金幣從數組 A 的 1 位置跳到 N 位置,你需要輸出花費最少的路徑,依次輸出所有經過的下標(從 1 到 N)。

如果有多種花費最少的方案,輸出字典順序最小的路徑。

如果無法到達 N 位置,請返回一個空數組。

樣例 1 : 輸入: [1,2,4,-1,2], 2 輸出: [1,3,5]樣例 2 : 輸入: [1,2,4,-1,2], 1 輸出: []注釋 : 路徑 Pa1,Pa2,……,Pan 是字典序小于 Pb1,Pb2,……,Pbm 的,當且僅當第一個 Pai 和 Pbi 不同的 i 滿足 Pai < Pbi,如果不存在這樣的 i 那么滿足 n < m。 A1 >= 0。 A2, ..., AN (如果存在) 的范圍是 [-1, 100]。 A 數組的長度范圍 [1, 1000]. B 的范圍 [1, 100].

來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/coin-path
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

class Solution { public:vector<int> cheapestJump(vector<int>& A, int B) {int n = A.size(), i, len, cost, idx = n-1;vector<int> dp(n, INT_MAX);vector<vector<int>> path(n);dp[0] = A[0];path[0] = {1};for(i = 0; i < n-1; i++) {if(dp[i] == INT_MAX)//狀態不存在continue;for(len = 1; len <= B; len++){if(i+len < n && A[i+len] != -1)//可以到達{if(dp[i+len] > dp[i]+A[i+len]){ //取最小的花費的路徑dp[i+len] = dp[i]+A[i+len];path[i+len] = path[i];path[i+len].push_back(i+len+1);}else if(dp[i+len] == dp[i]+A[i+len]){ //花費相同auto temp = path[i];temp.push_back(i+len+1);if(temp < path[i+len])//取字典序小的路徑path[i+len] = temp;}}}}return path[n-1];} };

52 ms 22 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 656. 金币路径(DP)的全部內容,希望文章能夠幫你解決所遇到的問題。

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