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

C++ . में गैस स्टेशन


मान लीजिए कि एक वृत्त है, और वृत्त पर n गैस स्टेशन हैं। हमारे पास डेटा के दो सेट हैं जैसे -

  • हर गैस स्टेशन में जितनी गैस होती है
  • एक गैस स्टेशन से दूसरे गैस स्टेशन की दूरी।

पहले बिंदु की गणना करें, जहां से एक कार सर्कल को पूरा करने में सक्षम होगी। 1 यूनिट गैस के लिए मान लें, कार 1 यूनिट दूरी तक जा सकती है। मान लीजिए कि चार गैस स्टेशन हैं, और गैस की मात्रा, और अगले गैस स्टेशनों से दूरी इस प्रकार है [(4, 6), (6, 5), (7, 3), (4, 5)], पहला बिंदु जहां से कार एक गोलाकार यात्रा कर सकती है, दूसरा गैस स्टेशन है। आउटपुट प्रारंभ होना चाहिए =1 (दूसरे गैस स्टेशनों का सूचकांक)

क्यू का उपयोग करके इस समस्या को कुशलता से हल किया जा सकता है। कतार का उपयोग वर्तमान दौरे को संग्रहीत करने के लिए किया जाएगा। हम पहले गैस स्टेशनों को कतार में सम्मिलित करेंगे, हम गैस स्टेशनों को तब तक सम्मिलित करेंगे जब तक हम या तो यात्रा पूरी नहीं कर लेते, या गैस की वर्तमान मात्रा नकारात्मक हो जाती है। यदि राशि ऋणात्मक हो जाती है, तो हम गैस स्टेशनों को खाली होने तक हटाते रहते हैं।

उदाहरण

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

#include <iostream>
using namespace std;
class gas {
   public:
      int gas;
      int distance;
};
int findStartIndex(gas stationQueue[], int n) {
   int start_point = 0;
   int end_point = 1;
   int curr_gas = stationQueue [start_point].gas - stationQueue [start_point].distance;
   while (end_point != start_point || curr_gas < 0) {
      while (curr_gas < 0 && start_point != end_point) {
         curr_gas -= stationQueue[start_point].gas - stationQueue [start_point].distance;
         start_point = (start_point + 1) % n;
         if (start_point == 0)
         return -1;
      }
      curr_gas += stationQueue[end_point].gas - stationQueue [end_point].distance;
      end_point = (end_point + 1) % n;
   }
   return start_point;
}
int main() {
   gas gasArray[] = {{4, 6}, {6, 5}, {7, 3}, {4, 5}};
   int n = sizeof(gasArray)/sizeof(gasArray [0]);
   int start = findStartIndex(gasArray, n);
   if(start == -1)
      cout<<"No solution";
   else
      cout<<"Index of first gas station : "<<start;
}

इनपुट

[[4, 6], [6, 5], [7, 3], [4, 5]]

आउटपुट

Index of first gas station : 1

  1. स्विच स्टेटमेंट C++

    C++ में स्विच स्टेटमेंट का उपयोग कैसे करें सशर्त बयान सभी प्रोग्रामिंग भाषाओं की एक सामान्य विशेषता है। इन कथनों का उपयोग किसी प्रोग्राम के प्रवाह को नियंत्रित करने और यह निर्दिष्ट करने के लिए किया जाता है कि कोड के विशिष्ट ब्लॉक कब निष्पादित किए जाने चाहिए। C++ में उपयोग किए जाने वाले मुख्य कंडीश

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की