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

C++ प्रोग्राम में प्रत्येक विकिरणित स्टेशन का अंतिम विकिरण

मान लीजिए सीधी रेखा में N स्टेशन हैं। उनमें से प्रत्येक में विकिरण शक्ति की समान गैर-ऋणात्मक शक्ति है। प्रत्येक स्टेशन निम्न तरीके से अपने पड़ोसी स्टेशनों की विकिरण शक्ति बढ़ा सकता है।

मान लीजिए विकिरण शक्ति R वाला स्टेशन i, (i-1)वें स्टेशन की विकिरण शक्ति को R-1 से बढ़ाएगा, (i-2)वें स्टेशन की विकिरण शक्ति को R-2 से बढ़ाएगा, और (i+1)वें स्टेशन की विकिरण शक्ति को R-1 से बढ़ाएगा, (i+2)वें स्टेशन की विकिरण शक्ति को R-2 से बढ़ाएगा। इत्यादि। तो उदाहरण के लिए, यदि ऐरे Arr = [1, 2, 3] जैसा है, तो आउटपुट 3, 4, 4 होगा। नया विकिरण होगा [1 + (2-1) + (3-2), 2 + (1-1) + (3-1), 3 + (2-1)] = [3, 4, 4]

विचार सरल है। प्रत्येक स्टेशन i के लिए ऊपर बताए अनुसार पड़ोसी स्टेशनों की विकिरण बढ़ाएं, जब तक प्रभावी विकिरण ऋणात्मक न हो जाए।

उदाहरण

#include <iostream>
using namespace std;

class pump {
public:
    int petrol;
    int distance;
};

int findStartIndex(pump pumpQueue[], int n) {
    int start_point = 0;
    int end_point = 1;
    int curr_petrol = pumpQueue[start_point].petrol - pumpQueue[start_point].distance;
    while (end_point != start_point || curr_petrol < 0) {
        while (curr_petrol < 0 && start_point != end_point) {
            curr_petrol -= pumpQueue[start_point].petrol - pumpQueue[start_point].distance;
            start_point = (start_point + 1) % n;
            if (start_point == 0)
                return -1;
        }
        curr_petrol += pumpQueue[end_point].petrol - pumpQueue[end_point].distance;
        end_point = (end_point + 1) % n;
    }
    return start_point;
}

int main() {
    pump PumpArray[] = {{4, 6}, {6, 5}, {7, 3}, {4, 5}};
    int n = sizeof(PumpArray) / sizeof(PumpArray[0]);
    int start = findStartIndex(PumpArray, n);
    if (start == -1)
        cout << "No solution";
    else
        cout << "Index of first petrol pump: " << start;
}

आउटपुट

Index of first petrol pump: 1

  1. - दिए गए रेंज में वह संख्या ढूंढने के लिए C++ प्रोग्राम जहां प्रत्येक अंक विशिष्ट हो

    मान लीजिए हमारे पास दो संख्याएं l और r हैं। हमें एक पूर्णांक x ढूंढना है, जो l और r के बीच (दोनों समावेशी) हो और x के सभी अंक विशिष्ट हों। उदाहरण के लिए, यदि इनपुट l = 211; r = 230 है, तो आउटपुट 213 होगा। चरण इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे: k := l से r तक, करें: h := k को स्ट

  1. C++ में कार्टेशियन निर्देशांकों को जोड़ने की न्यूनतम लागत ज्ञात करने का प्रोग्राम C++ में कार्टेशियन निर्देशांकों को जोड़ने की न्यूनतम लागत ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास 2D कार्टेशियन निर्देशांक बिंदुओं (x, y) की एक सूची है। हम (x0, y0) और (x1, y1) को जोड़ सकते हैं, जिसकी लागत |x0 - x1| + |y0 - y1| है। यदि हमें किसी भी संख्या में बिंदुओं को जोड़ने की अनुमति है, तो हमें वह न्यूनतम लागत ज्ञात करनी होगी जिससे हर बिंदु एक पथ से जुड़ा हो।उदाहरण के लिए

  1. C++ में बाइनरी खोज प्रोग्राम C++ में बाइनरी खोज प्रोग्राम

    बाइनरी खोज क्या है? बाइनरी खोज (आधा-अंतराल खोज) एक खोज एल्गोरिदम है जो क्रमबद्ध सरणी में लक्ष्य मान की स्थिति ढूंढता है। यह लक्ष्य मान की तुलना मध्य तत्व से करता है और खोज स्थान को आधा कर देता है। मुख्य बिंदु केवल क्रमबद्ध सरणी पर काम करता है समय जटिलता: O(log n) दुनिया के सभी नाम क्रमबद्ध हों तो