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

अंडा गिराने की पहेली


यह एक प्रसिद्ध पहेली समस्या है। मान लें कि n मंजिलों वाली एक इमारत है, अगर हमारे पास m अंडे हैं, तो हम कैसे पता लगा सकते हैं कि उस मंजिल को खोजने के लिए न्यूनतम बूंदों की संख्या क्या है जिससे अंडे को बिना तोड़े गिराना सुरक्षित है।

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

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

इनपुट और आउटपुट

इनपुट: अंडों की संख्या और अधिकतम मंजिल। मान लें अंडों की संख्या 4 है और अधिकतम मंजिल 10 है। आउटपुट: अंडों की संख्या दर्ज करें: 4 अधिकतम मंजिल दर्ज करें: 10 न्यूनतम परीक्षणों की संख्या: 4

एल्गोरिदम

eggTrialCount(eggs, floors)

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

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

शुरू     आकार [eggs+1, floors+1] का मैट्रिक्स परिभाषित करें     i:= 1 से eggs तक, करें       minTrial[i, 1] := 1       minTrial[i, 0] := 0     किया     j := 1 से floors तक, करें       minTrial[1, j] := j     किया     i := 2 से eggs तक, करें       j := 2 से floors तक, करें         minTrial[i, j] := ∞         k := 1 से j तक, करें           res := 1 + minTrial[i-1, k-1] और minTrial[i, j-k] का अधिकतम           यदि res < minTrial[i, j], तो             minTrial[i,j] := res         किया       किया     किया     minTrial[eggs, floors] वापस करें अंत

उदाहरण

#include<iostream> using namespace std; int max(int a, int b) {     return (a > b)? a: b; } int eggTrialCount(int eggs, int floors) {     //सबसे खराब स्थिति के लिए न्यूनतम परीक्षण     int minTrial[eggs+1][floors+1];       //ith अंडे और jवीं मंजिल के लिए न्यूनतम परीक्षण संग्रहीत करने के लिए     int res;     for (int i = 1; i <= eggs; i++) {       //पहली मंजिल से जांच के लिए एक परीक्षण, और 0वीं मंजिल के लिए कोई परीक्षण नहीं       minTrial[i][1] = 1;       minTrial[i][0] = 0;     }     for (int j = 1; j <= floors; j++)       //जब अंडा 1 है, तो हमें प्रत्येक मंजिल के लिए 1 परीक्षण चाहिए       minTrial[1][j] = j;     for (int i = 2; i <= eggs; i++) {       //2 या 2 से अधिक अंडों के लिए       for (int j = 2; j <= floors; j++) {       //दूसरी या दूसरी से अधिक मंजिल के लिए         minTrial[i][j] = INT_MAX;         for (int 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];       //पूछे गए अंडे और मंजिल के लिए परीक्षणों की संख्या } int main () {     int egg, maxFloor;     cout << "Enter number of eggs: "; cin >> egg;     cout << "Enter max Floor: "; cin >> maxFloor;     cout << "Minimum number of trials: " << eggTrialCount(egg, maxFloor); }

आउटपुट

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

  1. - C# में Math.Floor() मेथड

    C# में Math.Floor() मेथड का उपयोग निर्दिष्ट संख्या से कम या बराबर सबसे बड़ा अभिन्न मान लौटाने के लिए किया जाता है। सिंटैक्स public static decimal Floor (decimal val); public static double Floor (double val) ऊपर पहले सिंटैक्स के लिए, मान val डेसीमल संख्या है, जबकि दूसरे सिंटैक्स में Val डबल संख्या ह

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

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

  1. - SQL Server में FLOOR फंक्शन

    विवरण SQL Server में FLOOR फंक्शन संख्या या एक्सप्रेशन का निचला सीमा मान लौटाता है, यानी प्रसारित न्यूमेरिक एक्सप्रेशन से छोटा या बराबर सबसे बड़ा पूर्णांक मान लौटाता है। सिंटैक्स SQL Server में FLOOR फंक्शन का उपयोग करने के लिए, हम निम्न सिंटैक्स का उपयोग करते हैं: FLOOR(number) पैरामीटर्स: numbe