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

C प्रोग्राम: अंडा गिराने की पहेली - DP-11


यह एक प्रसिद्ध पहेली समस्या है। मान लीजिए n मंजिलों वाली एक इमारत है, यदि हमारे पास m अंडे हैं, तो हम कैसे पता लगा सकते हैं कि उस मंजिल को ढूंढने के लिए न्यूनतम कितने ड्रॉप की आवश्यकता है जहां से अंडा गिराने पर यह टूटे नहीं।

याद रखने के लिए कुछ महत्वपूर्ण बिंदु हैं -

  • जब एक अंडा दिए गए मंजिल से नहीं टूटता, तो यह किसी निचली मंजिल से भी नहीं टूटेगा।
  • यदि एक अंडा दिए गए मंजिल से टूटता है, तो यह सभी ऊपरी मंजिलों के लिए टूटेगा।
  • जब एक अंडा टूटता है, तो इसे त्याग दिया जाना चाहिए, अन्यथा हम इसका पुनः उपयोग कर सकते हैं।

इनपुट - अंडों की संख्या और अधिकतम मंजिल। मान लीजिए अंडों की संख्या 4 है और अधिकतम मंजिल 10 है।

आउटपुट - न्यूनतम परीक्षणों की संख्या 4।

एल्गोरिदम

eggTrialCount(eggs, floors)

इनपुट - अंडों की संख्या, अधिकतम मंजिल।

आउटपुट - न्यूनतम परीक्षणों की संख्या प्राप्त करें।

Begin   define matrix of size [eggs+1, floors+1]   for i:= 1 to eggs, do     minTrial[i, 1] := 1     minTrial[i, 0] := 0   done   for j := 1 to floors, do     minTrial[1, j] := j   done   for i := 2 to eggs, do     for j := 2 to floors, do         minTrial[i, j] := ∞         for k := 1 to j, do             res := 1 + max of minTrial[i-1, k-1] and minTrial[i, j-k]             if res < minTrial[i, j], then minTrial[i,j] := res         done     done   done   return minTrial[eggs, floors] End

उदाहरण

#include #define MAX_VAL 9999 int max(int a, int b) {     return (a > b)? a: b; } int eggTrialCount(int eggs, int floors) { //minimum trials for worst case     int minTrial[eggs+1][floors+1]; //to store minimum trials for i-th egg and jth floor     int res, i, j, k;     for (i = 1; i <= eggs; i++) { //one trial to check from first floor, and no trial for 0th floor         minTrial[i][1] = 1;         minTrial[i][0] = 0;     }     for (j = 1; j <= floors; j++) //when egg is 1, we need 1 trials for each floor         minTrial[1][j] = j;     for (i = 2; i <= eggs; i++){ //for 2 or more than 2 eggs         for (j = 2; j <= floors; j++) { //for second or more than second floor             minTrial[i][j] = MAX_VAL;             for (k = 1; k <= j; k++) {                 res = 1 + max(minTrial[i-1][k-1], minTrial[i][j-k]);                 if (res < minTrial[i][j])                 minTrial[i][j] = res;             }         }     }     return minTrial[eggs][floors]; //number of trials for asked egg and floor } int main () {     int egg, maxFloor;     printf("Enter number of eggs: ");     scanf("%d", &egg);     printf("Enter max Floor: ");     scanf("%d", &maxFloor);     printf("Minimum number of trials: %d", eggTrialCount(egg, maxFloor)); }

आउटपुट

Enter number of eggs: 4 Enter max Floor: 10 Minimum number of trials: 4

  1. C प्रोग्राम: समानांतर चतुर्भुज की परिधि ज्ञात करना C प्रोग्राम: समानांतर चतुर्भुज की परिधि ज्ञात करना

    समानांतर चतुर्भुज (Parallelogram) क्या है? एक समानांतर चतुर्भुज एक चतुर्भुज है जिसके: विपरीत भुजाएं समानांतर होती हैं विपरीत कोण समान होते हैं विकर्ण एक-दूसरे को द्विभाजित करते हैं परिधि/परिमाप सूत्र यदि भुजाएं a और b हैं, तो: परिधि = 2(a + b) = 2a + 2b उदाहरण भुजा aभुजा bपरिधि 231270.00 16.

  1. C में क्रिसमस ट्री प्रोग्राम C में क्रिसमस ट्री प्रोग्राम

    यहां हम एक दिलचस्प समस्या देखेंगे। इस समस्या में हम देखेंगे कि कैसे क्रिसमस ट्री को यादृच्छिक रूप से प्रिंट किया जाए। तो ट्री क्रिसमस ट्री लाइट्स की तरह झिलमिलाएगा। क्रिसमस ट्री प्रिंट करने के लिए, हम विभिन्न आकारों के पिरामिड को एक के नीचे एक प्रिंट करेंगे। सजावटी पत्तियों के लिए दिए गए कैरेक्टर्स

  1. पायथन प्रोग्राम: एग ड्रॉपिंग पज़ल पायथन प्रोग्राम: एग ड्रॉपिंग पज़ल

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन मान लीजिए हम जानना चाहते हैं कि 40-मंजिला इमारत की कौन सी मंजिलें अंडे गिराने के लिए सुरक्षित हैं, और कौन सी लैंडिंग पर अंडे को नुकसान पहुंचाएंगी, अंडों की मदद से। हमें कहानियों की जांच के लिए न्यूनतम परीक्षणों की संख्या प्रदर्शित