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

अंडा गिराने की पहेली के लिए सी कार्यक्रम - डीपी-11?

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

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

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

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

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

एल्गोरिदम

eggTrialCount(अंडे, फर्श)

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

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

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<stdio.h>
#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. सी एक समांतर चतुर्भुज की परिधि के लिए कार्यक्रम

    हमें समांतर चतुर्भुज की भुजाएँ दी गई हैं और कार्य एक समांतर चतुर्भुज की परिधि को उसके दिए गए पक्षों के साथ उत्पन्न करना और परिणाम प्रदर्शित करना है समांतर चतुर्भुज क्या है? समांतर चतुर्भुज एक प्रकार का द्विघात है जिसमें - विपरीत पक्ष समानांतर विपरीत कोण बराबर बहुभुज के विकर्ण एक दूसरे को समद्विभाज

  1. C . में क्रिसमस ट्री के लिए कार्यक्रम

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

  1. अंडा गिराने की पहेली के लिए पायथन कार्यक्रम

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