目錄
方法
輸入
輸出
上述程式碼的解釋
結論
首頁 後端開發 C++ 使用C++找到K叉樹中權重為W的路徑數

使用C++找到K叉樹中權重為W的路徑數

Sep 16, 2023 pm 06:09 PM
權重 路徑數 k叉樹

使用C++找到K叉樹中權重為W的路徑數

在本文中,我們將使用C 來計算K叉樹中權重為W的路徑數。我們已經給了一個K叉樹,它是一棵每個節點有K個子節點且每條邊都有一個權重的樹,權重從1到K遞減從一個節點到其所有子節點。

我們需要計算從根節點開始的累積路徑數,這些路徑具有權重為W且至少有一條邊的權重為M。所以,這是一個例子:

Input : W = 4, K = 3, M = 2

Output : 6
登入後複製

在給定的問題中,我們將使用dp來減少時間和空間複雜度。透過使用記憶化,我們可以使我們的程序更快,並使其適用於更大的約束。

方法

在這個方法中,我們將遍歷樹,並追蹤使用或不使用至少為M的權重的邊,且權重等於W,然後我們增加答案。

輸入

#include <bits/stdc++.h>
using namespace std;
int solve(int DP[][2], int W, int K, int M, int used){
   if (W < 0) // if W becomes less than 0 then return 0
       return 0;
    if (W == 0) {
        if (used) // if used is not zero then return 1
           return 1; //as at least one edge of weight M is included
       return 0;
   }
    if (DP[W][used] != -1) // if DP[W][used] is not -1 so that means it has been visited.
       return DP[W][used];
    int answer = 0;
   for (int i = 1; i <= K; i++) {
        if (i >= M)
           answer += solve(DP, W - i, K, M, used | 1); // if the condition is true
                                                    //then we will change used to 1.
       else
           answer += solve(DP, W - i, K, M, used);
   }
   return answer;
}
int main(){
   int W = 3; // weight.
   int K = 3; // the number of children a node has.
   int M = 2; // we need to include an edge with weight at least 2.
   int DP[W + 1][2]; // the DP array which will
   memset(DP, -1, sizeof(DP)); // initializing the array with -1 value
   cout << solve(DP, W, K, M, 0) << "\n";
   return 0;
}
登入後複製

輸出

3
登入後複製

上述程式碼的解釋

在這種方法中,至少包含一次或不包含任何權重為M的邊。其次,我們計算了路徑的總權重,如果它等於W。

我們將答案增加一,將該路徑標記為已訪問,繼續通過所有可能的路徑,並至少包含一條權重大於或等於M的邊。

結論

在本文中,我們使用動態規劃解決了在k叉樹中找到權重為W的路徑數的問題,時間複雜度為O(W*K )

我們也學習了解決這個問題的C 程式和完整的方法(普通和高效)。

以上是使用C++找到K叉樹中權重為W的路徑數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

微博權重是什麼意思 微博權重是什麼意思 Dec 11, 2020 pm 02:36 PM

微博權重是什麼意思

了解CSS選擇器通配符的權重和優先順序的深層理解 了解CSS選擇器通配符的權重和優先順序的深層理解 Dec 26, 2023 pm 01:36 PM

了解CSS選擇器通配符的權重和優先順序的深層理解

Python程式找到字串的權重 Python程式找到字串的權重 Sep 04, 2023 pm 08:09 PM

Python程式找到字串的權重

抖音低權重號還有救嗎?如何補救? 抖音低權重號還有救嗎?如何補救? Mar 07, 2024 pm 08:40 PM

抖音低權重號還有救嗎?如何補救?

具有權重大於等於1的邊的最小乘積路徑 具有權重大於等於1的邊的最小乘積路徑 Aug 30, 2023 am 11:37 AM

具有權重大於等於1的邊的最小乘積路徑

抖音權重低怎麼提升?權重低是什麼原因造成的? 抖音權重低怎麼提升?權重低是什麼原因造成的? Mar 30, 2024 am 09:31 AM

抖音權重低怎麼提升?權重低是什麼原因造成的?

使用C++編程,找到在網格中從一個點到另一個點的路徑數 使用C++編程,找到在網格中從一個點到另一個點的路徑數 Aug 29, 2023 pm 10:25 PM

使用C++編程,找到在網格中從一個點到另一個點的路徑數

使用C++找到K叉樹中權重為W的路徑數 使用C++找到K叉樹中權重為W的路徑數 Sep 16, 2023 pm 06:09 PM

使用C++找到K叉樹中權重為W的路徑數

See all articles