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

शुरुआती बिंदु की संख्या खोजने के लिए कार्यक्रम जहां से हम पायथन में यात्रा शुरू कर सकते हैं

मान लीजिए कि n शहर 0 से n-1 तक गिने गए हैं और n निर्देशित सड़कें हैं। हम शहर I से शहर (i + 1)% n [0 से 1 से 2 से .... से N - 1 से 0] तक यात्रा कर सकते हैं। हमारे पास एक कार है। हमारी कार के फ्यूल टैंक की कैपेसिटी कैप यूनिट है। वहाँ ईंधन [i] इकाइयाँ हैं जिनका उपयोग हम शहर i की शुरुआत में कर सकते हैं और कार लागत [i] शहर i से (i + 1)% n तक यात्रा करने के लिए ईंधन की इकाइयाँ लेती है। हमें यह पता लगाना होगा कि ऐसे कितने शहर हैं जहां से हम अपनी कार शुरू कर सकते हैं, ताकि हम सभी शहरों में घूम सकें और उसी शहर तक पहुंच सकें जहां से शुरू हुआ था?

इसलिए, यदि इनपुट कैप =3 ईंधन =[3,1,2] लागत =[2,2,2] जैसा है, तो आउटपुट 2 होगा क्योंकि दो संभावित समाधान हैं।

  • हम शहर 0 से शुरू कर सकते हैं, टैंक को 3 यूनिट ईंधन से भर सकते हैं, और शहर की यात्रा के लिए 2 यूनिट ईंधन का उपयोग कर सकते हैं। टैंक में एक इकाई शेष है। शहर 1 में 1 यूनिट ईंधन लेने के बाद, कार में 2 यूनिट ईंधन होता है और हम 2 यूनिट ईंधन का उपयोग करके शहर 2 की यात्रा कर सकते हैं। ईंधन टैंक अब खाली है। शहर 2 में 2 गैलन ईंधन भरने के बाद, हम 2 गैलन ईंधन का उपयोग करके वापस शहर 0 की यात्रा करते हैं।

  • हम शहर 2 से शुरू कर सकते हैं, कार को 2 यूनिट ईंधन से भर सकते हैं, और शहर 0 की यात्रा कर सकते हैं। फिर शहर 0 से 3 गैलन ईंधन भरने के बाद, हम शहर 1 की यात्रा करते हैं, और हमारे पास 1 यूनिट ईंधन है। फिर हम सिटी 1 में 1 यूनिट ईंधन भर सकते हैं और अब 2 यूनिट ईंधन और 2 शहर की यात्रा कर सकते हैं।

हालांकि, हम 1 शहर से शुरू नहीं कर सकते हैं, केवल 1 यूनिट ईंधन मौजूद है, लेकिन शहर 2 की यात्रा के लिए 2 गैलन की आवश्यकता होती है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=ईंधन का आकार
  • req :=आकार n की एक सरणी और 0 से भरें
  • के लिए 0 से 1 की सीमा में, करो
    • n-1 से 0 की श्रेणी में i के लिए, 1 से घटाएं
      • अगला :=(i + 1) मॉड एन
      • req[i] :=अधिकतम 0 और req[nexti] + लागत[i] - ईंधन[i]
      • यदि न्यूनतम (req[i] + ईंधन[i] और कैप) - लागत[i]
      • वापसी 0
  • r में 0s की वापसी गणना संख्या
  • उदाहरण

    आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    def solve(cap, fuel, costs):
       n = len(fuel)
       req = [0] * n
    
       for k in range(2):
          for i in range(n-1, -1, -1):
             nexti = (i + 1) % n
             req[i] = max(0, req[nexti] + costs[i] - fuel[i])
             if min(req[i] + fuel[i], cap) - costs[i] < req[nexti]:
                return 0
       return sum(1 for r in req if r == 0)
    
    cap = 3
    fuel = [3,1,2]
    costs = [2,2,2]
    print(solve(cap, fuel, costs))

    इनपुट

    3, [3,1,2], [2,2,2]
    

    आउटपुट

    2

    1. पायथन में पहले से अंतिम नोड तक प्रतिबंधित पथों की संख्या खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास एक अप्रत्यक्ष भारित जुड़ा हुआ ग्राफ है। ग्राफ में n नोड्स होते हैं और उन्हें 1 से n तक लेबल किया जाता है। प्रारंभ से अंत तक का पथ [z0, z1, z2, ..., zk] जैसे नोड्स का एक क्रम है, यहां z0 प्रारंभ नोड है और zk अंत नोड है और zi और zi+1 के बीच एक किनारा है जहां 0 <=मैं dist(zi+1)

    1. पायथन में हम जितने सिक्के एकत्र कर सकते हैं, उन्हें खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास एक 2D मैट्रिक्स है जहां प्रत्येक सेल कुछ सिक्के संग्रहीत करता है। अगर हम [0,0] से शुरू करते हैं, और केवल दाएं या नीचे जा सकते हैं, तो हमें नीचे दाएं कोने से अधिकतम सिक्कों की संख्या का पता लगाना होगा। तो, अगर इनपुट पसंद है 1 4 2 2 0 0 0 5 तब आउटपुट 14 होग

    1. स्ट्रिंग की संख्या खोजने के लिए प्रोग्राम जहां हम 'ए' 'ए' या 'बी' हो सकते हैं, और 'बी' पाइथन में 'बी' रहता है

      मान लीजिए कि हमारे पास केवल ए और बी के साथ एक स्ट्रिंग है। ए एस ए रह सकता है या बी में बदल सकता है, लेकिन बी को बदला नहीं जा सकता है। हमें अद्वितीय स्ट्रिंग्स की संख्या ज्ञात करनी होगी जो हम बना सकते हैं। इसलिए, यदि इनपुट s =baab जैसा है, तो आउटपुट 4 होगा, क्योंकि हम इन स्ट्रिंग्स को बना सकते हैं -