Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C में 0-1 नैपसैक समस्या

नैपसैक एक बैग है। और नैपसैक समस्या वस्तुओं को उनके मूल्य के आधार पर बैग में रखने से संबंधित है। इसका उद्देश्य बैग के अंदर मूल्य को अधिकतम करना है। 0-1 नैपसैक में आप या तो वस्तु रख सकते हैं या छोड़ सकते हैं, वस्तु के किसी हिस्से को रखने की अवधारणा नहीं है।

नमूना समस्या

वस्तुओं के मूल्य = {20, 25, 40}
वस्तुओं के वजन = {25, 20, 30}
बैग की क्षमता = 50

वजन वितरण

25,20 {1,2}  20,30 {2,3}
यदि हम {1,3} उपयोग करते हैं तो वजन अधिकतम अनुमत मान से ऊपर होगा।
{1,2} के लिए: वजन = 20+25=45, मूल्य = 20+25=45
{2,3} के लिए: वजन = 20+30=50, मूल्य = 25+40=65

अधिकतम मूल्य 65 है इसलिए हम वस्तु 2 और 3 को नैपसैक में रखेंगे।

0-1 नैपसैक समस्या का प्रोग्राम

#include <stdio.h>

int max(int a, int b) {
    return (a > b) ? a : b;
}

int knapsack(int W, int wt[], int val[], int n) {
    int i, w;
    int knap[n + 1][W + 1];
    for (i = 0; i <= n; i++) {
        for (w = 0; w <= W; w++) {
            if (i == 0 || w == 0)
                knap[i][w] = 0;
            else if (wt[i - 1] <= w)
                knap[i][w] = max(val[i - 1] + knap[i - 1][w - wt[i - 1]], knap[i - 1][w]);
            else
                knap[i][w] = knap[i - 1][w];
        }
    }
    return knap[n][W];
}

int main() {
    int val[] = {20, 25, 40};
    int wt[] = {25, 20, 30};
    int W = 50;
    int n = sizeof(val) / sizeof(val[0]);
    printf("The solution is: %d", knapsack(W, wt, val, n));
    return 0;
}

आउटपुट

The solution is: 65
  1. C में सरणी की रेंज का गुणनफल (मॉड्यूलो के साथ) C में सरणी की रेंज का गुणनफल (मॉड्यूलो के साथ)

    एक सरणी, L, R, P दिए गए हैं। कार्य L और R के बीच के तत्वों का गुणनफल मॉड्यूलो P के साथ निकालना है। उदाहरण: इनपुट: A[] = {1, 2, 3, 4, 5, 6}, P = 29, L = 2, R = 6 आउटपुट: 24 इनपुट: A[] = {1, 2, 3, 4, 5, 6}, L = 2, R = 5, P = 113 आउटपुट: 7 दृष्टिकोण सरणी, L, R, P को इनपुट लें। L से R तक के तत्वों को

  1. 0-1 BFS (बाइनरी वेट ग्राफ में सबसे छोटा पथ) C प्रोग्राम में? 0-1 BFS (बाइनरी वेट ग्राफ में सबसे छोटा पथ) C प्रोग्राम में?

    मान लीजिए हमारे पास कुछ नोड्स और कनेक्टेड एज वाला एक ग्राफ है। प्रत्येक एज का बाइनरी वेट है। इसलिए वेट या तो 0 या 1 होगा। एक सोर्स वर्टेक्स दिया गया है। हमें सोर्स से किसी भी अन्य वर्टेक्स तक सबसे छोटा पथ ढूंढना है। मान लीजिए ग्राफ नीचे जैसा है: सामान्य BFS एल्गोरिदम में सभी एज वेट समान होते हैं।

  1. पायथन प्रोग्राम: 0-1 नैपसैक समस्या पायथन प्रोग्राम: 0-1 नैपसैक समस्या

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें n वस्तुओं के वजन और मूल्य दिए गए हैं, हमें इन वस्तुओं को क्षमता W के बैग में अधिकतम क्षमता w तक रखना है। हमें अधिकतम वस्तुओं को ले जाने की आवश्यकता है और उसका मूल्य वापस करना है। उदाहरण (साधारण दृष्टिकोण) W): return k