


Melaksanakan masalah ransel 0/1 dalam C/C++ menggunakan kaedah cawangan-dan-terikat
Ideanya adalah untuk menyedari hakikat bahawa kaedah tamak memberikan penyelesaian terbaik kepada masalah beg beg pecahan.
Untuk menyemak sama ada nod tertentu boleh memberikan kami penyelesaian yang lebih baik, kami mengira penyelesaian terbaik (mengikut nod) yang melaksanakan pendekatan tamak. Jika kaedah tamak itu sendiri mengira lebih banyak penyelesaian daripada penyelesaian terbaik setakat ini, maka kita tidak boleh mendapatkan penyelesaian yang lebih baik melalui nod.
Algoritma lengkap adalah seperti berikut -
Susun semua item mengikut tertib menurun nilai per unit nisbah berat supaya had atas boleh dikira menggunakan kaedah tamak.
Memulakan keuntungan maksimum, contohnya maxProfit = 0
Buat baris gilir kosong Q.
Keputusan nod maya mencipta pokok dan memasukkan atau beratur ke dalam Q. Keuntungan dan berat nod maya ialah 0.
-
Lakukan operasi berikut apabila Q tidak kosong atau kosong.
Mencipta projek dalam Q. Biarkan item perahan ialah u.
Kira keuntungan nod peringkat seterusnya. Jika keuntungan lebih tinggi daripada maxProfit, ubah suai maxProfit.
Kira sempadan nod tahap seterusnya. Jika terikat lebih tinggi daripada maxProfit, tambahkan nod tahap seterusnya kepada Q.
Pertimbangkan situasi di mana nod peringkat seterusnya tidak dipertimbangkan atau dianggap sebagai sebahagian daripada penyelesaian dan tambahkan nod ke baris gilir di peringkat seterusnya tetapi berat dan keuntungan tidak mengendalikan atau mempertimbangkan nod peringkat seterusnya.
Ilustrasi diberikan di bawah -
Input// First thing in every pair is treated as weight of item // and second thing is treated as value of item Item arr1[] = {{2, 40}, {3.14, 50}, {1.98, 100}, {5, 95}, {3, 30}}; Knapsack Capacity W1 = 10
Output
The maximum possible profit = 235
Atas ialah kandungan terperinci Melaksanakan masalah ransel 0/1 dalam C/C++ menggunakan kaedah cawangan-dan-terikat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Fungsi strcmp()adalah fungsi dalam perpustakaan dan diisytiharkan dalam fail pengepala “string.h”.

fseek() digunakan dalam bahasa C untuk mengalihkan penuding fail ke lokasi tertentu. Offset dan strim ialah sasaran penunjuk, dan ia diberikan dalam hujah fungsi. Jika berjaya, ia mengembalikan sifar. Jika tidak berjaya, ia mengembalikan nilai bukan sifar. Berikut ialah sintaks fseek() dalam bahasa C: intfseek(FILE*stream,longintoffset,intwhence) Berikut ialah parameter yang digunakan dalam fseek(): stream− Ini ialah penunjuk yang digunakan untuk mengenal pasti aliran. offset − Ini ialah bilangan bait daripada kedudukan. dari mana−Di sinilah offset ditambah. dari mana diberikan oleh pemalar berikut

Ideanya adalah untuk menyedari hakikat bahawa kaedah tamak memberikan penyelesaian terbaik kepada masalah beg beg pecahan. Untuk menyemak sama ada nod tertentu boleh memberikan kami penyelesaian yang lebih baik, kami mengira penyelesaian terbaik (mengikut nod) yang melaksanakan pendekatan tamak. Jika kaedah tamak itu sendiri mengira lebih banyak penyelesaian daripada penyelesaian terbaik setakat ini, maka kita tidak boleh mendapatkan penyelesaian yang lebih baik melalui nod. Algoritma lengkap adalah seperti berikut - Semua item diisih mengikut tertib menurun nilai per unit nisbah berat supaya had atas boleh dikira menggunakan kaedah tamak. Mulakan keuntungan maksimum, contohnya maxProfit=0 untuk membuat baris gilir kosong Q. Nod maya membuat keputusan mencipta pokok dan memasukkan atau beratur ke dalam Q. Keuntungan dan berat nod maya ialah 0. Lakukan operasi berikut apabila Q tidak kosong atau kosong. cipta

Satu-satunya cara selamat ialah memeriksa sebelum limpahan berlaku. Terdapat beberapa cara tidak rasmi untuk menyemak limpahan integer walaupun. Jadi, jika matlamat anda adalah untuk mengesan limpahan apabila menambah integer yang tidak ditandatangani, anda boleh menyemak sama ada hasilnya sebenarnya lebih kecil daripada dua nilai tambah. Contohnya, kod sampel unsignedintx,y;unsignedintvalue=x+y;booloverflow=value<x;//Sebagai alternatif, "value<y" juga harus berfungsi Ini kerana jika x dan y kedua-duanya adalah integer tidak bertanda, jika ia ditambah dan melimpah, Nilai mereka tidak boleh lebih besar daripada mana-mana daripada mereka, seperti yang mereka perlukan

Kami tahu bahawa pengendali ternary dilaksanakan dan bukannya klausa if..else. Ia diwakili oleh ?:. '? 'Simbol adalah bersamaan dengan bahagian if, dan ':' adalah bersamaan dengan bahagian lain. 3 program berikut menerangkan beberapa pemerhatian menarik dalam kes pengendali ternary. Program berikut menyusun tanpa sebarang ralat. Jenis pulangan ungkapan ternary dijangka terapung (seperti dalam exp2), dan exp3 (iaitu, jenis sifar-int literal) boleh ditukar secara tersirat kepada terapung. #include<iostream>usingnamespacestd;intmain(){ inttest1=0;&

Algoritma tamak adalah algoritma yang digunakan untuk mencari penyelesaian optimum kepada masalah tertentu. Algoritma tamak berfungsi dengan mencari penyelesaian optimum tempatan untuk setiap bahagian (penyelesaian optimum untuk satu bahagian masalah), dengan itu menunjukkan bahawa penyelesaian optimum global boleh ditemui. Dalam masalah ini, kami akan menggunakan algoritma Algoritma Greedy untuk mencari bilangan minimum syiling/nota yang boleh membentuk jumlah tertentu. Untuk ini, kami akan mempertimbangkan semua syiling atau wang kertas yang sah, iaitu denominasi {1,2,5,10,20,50,100,200,500,2000}. Kita perlu mengembalikan bilangan syiling/nota yang diperlukan untuk menjumlahkan jumlah tersebut. Mari kita ambil beberapa contoh untuk memahami konteks dengan lebih baik - Contoh 1 - Input: 1231 Output: 7 Penerangan - Kami memerlukan dua nota 500 rupee

Penghitungan ialah jenis data yang ditentukan pengguna dalam bahasa C. Ia digunakan untuk memberi nama kepada pemalar integer, menjadikan program lebih mudah dibaca dan diselenggara. Kata kunci "enum" digunakan untuk mengisytiharkan penghitungan. Berikut ialah sintaks penghitungan dalam bahasa C: enumenum_name{const1,const2,.....};Theenumkeywordisalsousedtodefinethevariablesofenumtype.Therearetwowaystodefinethevariablesofenumtypeasfollows.enumweek{Ahad,isnin,selasa,

Tatasusunan 4-dimensi ialah tatasusunan yang terdiri daripada tatasusunan 3-dimensi. Algoritma Mula.Isytiharkanpembolehubah.Isytiharkanelemen tatasusunan.Ambil unsur-unsurasinput.Ambil unsur-unsurasinput.Cetakelemensimpananray.Tamat.Ini ialah contoh tatasusunan 4D. #include<iostream>usingnamespacestd;intmain(){ inta[2][2][3
