Jadual Kandungan
Kaedah
Input
Output
Penjelasan kod di atas
Kesimpulan
Rumah pembangunan bahagian belakang C++ Cari bilangan laluan dengan berat W dalam pokok K-ary menggunakan C++

Cari bilangan laluan dengan berat W dalam pokok K-ary menggunakan C++

Sep 16, 2023 pm 06:09 PM
berat badan Bilangan laluan pokok k-ary

Cari bilangan laluan dengan berat W dalam pokok K-ary menggunakan C++

Dalam artikel ini, kami akan menggunakan C++ untuk mengira bilangan laluan dengan berat W dalam pokok K-ary. Kami telah diberikan pokok K-ary, iaitu pokok di mana setiap nod mempunyai anak K dan setiap tepi mempunyai berat, dengan berat berkurangan daripada 1 kepada K daripada nod kepada semua anak-anaknya.

Kita perlu mengira bilangan kumulatif laluan bermula dari nod akar yang mempunyai berat W dan sekurang-kurangnya satu tepi dengan berat M. Jadi, berikut adalah contoh:

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

Output : 6
Salin selepas log masuk

Dalam masalah yang diberikan, kami akan menggunakan dp untuk mengurangkan kerumitan masa dan ruang. Dengan menggunakan penghafalan, kami boleh membuat program kami lebih cepat dan menyesuaikannya dengan kekangan yang lebih besar.

Kaedah

Dalam kaedah ini kita akan melintasi pokok dan menjejaki tepi dengan atau tanpa berat sekurang-kurangnya M dan berat bersamaan dengan W dan kemudian kita menambah jawapan.

Input

#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;
}
Salin selepas log masuk

Output

3
Salin selepas log masuk

Penjelasan kod di atas

Dalam kaedah ini, mana-mana tepi dengan berat M disertakan sekurang-kurangnya sekali atau tidak. Kedua, kami mengira jumlah berat laluan jika ia sama dengan W.

Kami menambah jawapan dengan satu, menandakan laluan sebagai dilawati, meneruskan melalui semua laluan yang mungkin, dan mengandungi sekurang-kurangnya satu tepi dengan berat lebih besar daripada atau sama dengan M.

Kesimpulan

Dalam kertas ini, kami menggunakan pengaturcaraan dinamik untuk menyelesaikan masalah mencari bilangan laluan dengan berat W dalam pokok k-ary dengan kerumitan masa O(W*K).

Kami juga mempelajari program C++ dan kaedah lengkap (biasa dan cekap) untuk menyelesaikan masalah ini.

Atas ialah kandungan terperinci Cari bilangan laluan dengan berat W dalam pokok K-ary menggunakan C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

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

微博权重是指微博官方对微博号的评分,主要体现在搜索和评论时的排序,权重越高排序越靠前,因此微博权重也会影响到微博号的流量数据。提高权重可以通过实名制的方式,还可以成为微博的签约自媒体。

Dapatkan pemahaman yang mendalam tentang berat dan keutamaan kad bebas pemilih CSS Dapatkan pemahaman yang mendalam tentang berat dan keutamaan kad bebas pemilih CSS Dec 26, 2023 pm 01:36 PM

Pemahaman mendalam tentang berat dan keutamaan kad bebas pemilih CSS Dalam helaian gaya CSS, pemilih ialah alat penting untuk menentukan elemen HTML yang digunakan untuk gaya. Keutamaan dan berat pemilih menentukan gaya yang digunakan apabila berbilang peraturan digunakan pada elemen HTML pada masa yang sama. Pemilih kad bebas ialah pemilih biasa dalam CSS. Ia diwakili oleh simbol "*", yang bermaksud ia sepadan dengan semua elemen HTML. Pemilih kad bebas adalah mudah tetapi boleh menjadi sangat berguna dalam situasi tertentu. Walau bagaimanapun, berat dan keutamaan pemilih kad bebas juga

Program Python untuk mencari berat rentetan Program Python untuk mencari berat rentetan Sep 04, 2023 pm 08:09 PM

Dalam artikel ini, tugas yang diberikan adalah untuk mencari jumlah berat rentetan. Untuk mengira berat tali, kami menukar rentetan yang diberikan kepada bentuk yang lebih rendah. Mengambil kira berat aksara, kita ambil a=1, b=,2 dan seterusnya sehingga z=26. Dalam artikel Python ini, kaedah untuk mencari berat rentetan yang diberikan dibentangkan menggunakan dua contoh berbeza. Dalam contoh pertama, aksara yang diberikan dalam rentetan ialah fetch, hed dan kemudian pemberat masing-masing ditambah pada pemberat yang dikemas kini. Dalam Contoh 2, anda mula-mula mengira kekerapan aksara yang diberikan muncul dalam rentetan, kemudian darabkan kekerapan itu dengan berat aksara yang sepadan, dan kemudian tambah semua berat komponen ini bersama-sama untuk mendapatkan hasil akhir. Contoh 1: Cari berat rentetan dan tambah aksara menggunakan lelaran

Bolehkah akaun berwajaran rendah Douyin masih disimpan? Bagaimana untuk membetulkan perkara ini? Bolehkah akaun berwajaran rendah Douyin masih disimpan? Bagaimana untuk membetulkan perkara ini? Mar 07, 2024 pm 08:40 PM

Di Douyin, platform video pendek berprofil tinggi, mempunyai akaun berkuasa tinggi adalah impian ramai pengguna. Walau bagaimanapun, untuk beberapa akaun dengan berat badan rendah, cara meningkatkan berat Douyin telah menjadi masalah mendesak yang perlu diselesaikan. Artikel ini bertujuan untuk meneroka cara meningkatkan akaun berwajaran rendah dan berkongsi beberapa kaedah dan teknik yang berkesan. 1. Sediakan kandungan berkualiti tinggi: Tidak kira di platform apa pun, kandungan sentiasa menjadi yang paling penting. Untuk meningkatkan kuasa akaun Douyin anda, anda perlu menyediakan kandungan berkualiti tinggi yang menarik dan unik. Ini bermakna anda harus membuat video yang menarik, berharga dan tersendiri yang akan menarik minat dan bergema dengan khalayak anda. Beri perhatian kepada topik dan trend hangat, sentiasa berinovasi dan mencuba idea baharu, serta menarik lebih banyak perhatian dan suka penonton. 2. Berinteraksi dengan penonton: Secara positif

Pengaturcaraan dalam C++, cari bilangan laluan dari satu titik ke titik lain dalam grid Pengaturcaraan dalam C++, cari bilangan laluan dari satu titik ke titik lain dalam grid Aug 29, 2023 pm 10:25 PM

Dalam artikel ini, kita diberikan masalah di mana kita perlu mencari jumlah bilangan laluan dari titik A ke titik B, di mana A dan B adalah titik tetap, iaitu A ialah titik sudut kiri atas dalam grid dan B ialah Titik Bawah. titik sudut kanan, contohnya −Input:N=5Output:252Input:N=4Output:70Input:N=3Output:20 Dalam masalah yang diberikan, kita boleh merumuskan jawapan dan memperoleh hasilnya melalui pemerhatian mudah. Kaedah mencari penyelesaian Dalam kaedah ini kita memperoleh formula dengan memerhatikan bahawa apabila melintasi grid dari A ke B kita perlu pergi ke kanan n kali dan ke bawah n kali yang bermaksud kita perlu mencari semua kombinasi laluan yang mungkin, jadi kita mendapat

Cari bilangan laluan dengan berat W dalam pokok K-ary menggunakan C++ Cari bilangan laluan dengan berat W dalam pokok K-ary menggunakan C++ Sep 16, 2023 pm 06:09 PM

Dalam artikel ini, kami akan menggunakan C++ untuk mengira bilangan laluan dengan berat W dalam pokok K-ary. Kami telah diberikan pokok K-ary, iaitu pokok di mana setiap nod mempunyai anak K dan setiap tepi mempunyai berat, dengan berat berkurangan daripada 1 kepada K daripada nod kepada semua anak-anaknya. Kita perlu mengira bilangan terkumpul laluan bermula dari nod akar yang mempunyai berat W dan sekurang-kurangnya satu tepi dengan berat M. Jadi, berikut ialah contoh: Input:W=4,K=3,M=2Output:6 Dalam masalah yang diberikan, kita akan menggunakan dp untuk mengurangkan kerumitan masa dan ruang. Dengan menggunakan penghafalan, kami boleh membuat program kami lebih cepat dan menyesuaikannya dengan kekangan yang lebih besar. Kaedah Dalam kaedah ini kita akan melintasi pokok dan menjejaki kegunaan

Laluan produk minimum dengan tepi dengan berat lebih besar daripada atau sama dengan 1 Laluan produk minimum dengan tepi dengan berat lebih besar daripada atau sama dengan 1 Aug 30, 2023 am 11:37 AM

Untuk mencari laluan dengan kelebihan terkecil dengan berat lebih besar daripada atau sama dengan 1, kita boleh menggunakan algoritma Dijkstra dengan sedikit pengubahsuaian. Pertama, kami menetapkan berat nod sumber kepada 1 dan berat nod lain kepada infiniti. Semasa pelaksanaan algoritma, kami tidak lagi mengemas kini jarak, tetapi hasil darab pemberat. Ini memastikan laluan dengan berat terkecil dipilih. Dengan memilih nod dengan berat terkecil pada setiap langkah, kami mencari laluan terpendek secara berulang sehingga nod sasaran dicapai. Akhirnya, hasil darab pemberat di sepanjang laluan ini adalah minimum, memenuhi syarat yang diberikan. Kaedah Digunakan Algoritma Dijkstra yang diubah suai, algoritma Bellman-Ford dengan pengubahsuaian produk berwajaran, produk berwajaran Dijkstra yang diubah suai dengan produk berwajaran

Bagaimana untuk meningkatkan berat badan rendah Douyin? Apakah sebab berat badan rendah? Bagaimana untuk meningkatkan berat badan rendah Douyin? Apakah sebab berat badan rendah? Mar 30, 2024 am 09:31 AM

TikTok adalah salah satu platform media sosial paling popular dengan ratusan juta pengguna. Walau bagaimanapun, bagi kebanyakan pencipta Douyin, mereka menghadapi masalah biasa, iaitu berat Douyin yang rendah. Berat Douyin yang rendah bermakna sukar untuk video mereka disyorkan kepada lebih ramai pengguna, sekali gus menjejaskan pendedahan dan pertumbuhan peminat mereka. Jadi, menghadapi masalah ini, bagaimana kita harus meningkatkan berat badan Douyin kita? 1. Bagaimana untuk meningkatkan berat badan rendah Douyin? Pengoptimuman kata kunci ialah kunci untuk meningkatkan berat video Douyin. Apabila menerbitkan video, kita harus memberi perhatian kepada memilih kata kunci yang sesuai, yang akan membantu video itu dicari dan disyorkan. Anda boleh mencari kata kunci yang berkaitan dengan kandungan anda dengan menyelidik kata kunci dan topik yang popular, dan menggunakannya dengan sewajarnya dalam tajuk, perihalan dan teg. Cukup baik

See all articles