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

C++ में टीवी शो अवधि गणना


मान लीजिए हमारे पास टीवी शो की एक सूची है, और दूसरी सूची अवधि की है, और एक पूर्णांक k है। यहाँ shows[i] और duration[i] i-वें व्यक्ति द्वारा देखे गए शो का नाम और अवधि दर्शाते हैं। हमें k सबसे अधिक देखे गए शो की कुल अवधि ज्ञात करनी है।

उदाहरण के लिए, यदि इनपुट है: shows: ["Castle Play", "Fairy Tale Series", "Castle Play", "Jerry Mouse", "Rich Boy"], duration: [6, 4, 6, 14, 5] और k = 2, तो आउटपुट 26 होगा।

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • एक मैप m परिभाषित करें जो शो के नाम को कुंजी और कुल अवधि को मान के रूप में संग्रहीत करेगा।
  • n := v का आकार
  • i := 0 से n-1 तक लूप चलाएं:
    • m[v[i]] := m[v[i]] + d[i]
  • एक सरणी arr परिभाषित करें।
  • मैप m के प्रत्येक कुंजी-मान युग्म के लिए, मान को arr के अंत में डालें।
  • arr को अवरोही क्रम में सॉर्ट करें।
  • ret := 0
  • i := 0 से k-1 तक लूप चलाएं:
    • ret := ret + arr[i]
  • ret लौटाएं।

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int solve(vector<string>& v, vector<int>& d, int k) {
        map<string, int> m;
        int n = v.size();
        for (int i = 0; i < n; i++) {
            m[v[i]] += d[i];
        }
        vector<int> arr;
        for (auto it : m) {
            arr.push_back(it.second);
        }
        sort(arr.rbegin(), arr.rend());
        int ret = 0;
        for (int i = 0; i < k; i++) {
            ret += arr[i];
        }
        return ret;
    }
};

int main() {
    vector<string> v = {"Castle Play", "Fairy Tale Series", "Castle Play", "Jerry Mouse", "Rich Boy"};
    vector<int> v1 = {6, 4, 6, 14, 5};
    Solution ob;
    cout << (ob.solve(v, v1, 2));
    return 0;
}

इनपुट

{"Castle Play", "Fairy Tale Series", "Castle Play", "Jerry Mouse", "Rich Boy"}, {6, 4, 6, 14, 5}, 2

आउटपुट

26
  1. C++ में प्रोसेस मारें C++ में प्रोसेस मारें

    मान लीजिए हमारे पास n प्रोसेस हैं, यहां प्रत्येक प्रोसेस की एक अद्वितीय आईडी होती है जिसे PID या प्रोसेस आईडी कहा जाता है और इसका PPID (पैरेंट प्रोसेस आईडी) भी होता है। प्रत्येक प्रोसेस का केवल एक पैरेंट प्रोसेस होता है, लेकिन उसके एक या अधिक चाइल्ड प्रोसेस हो सकते हैं। यह एक ट्री संरचना की तरह है।

  1. C++ में गिलहरी सिमुलेशन C++ में गिलहरी सिमुलेशन

    एक पेड़, एक गिलहरी, और कई नट्स हैं। स्थितियों को 2D ग्रिड में सेल द्वारा दर्शाया जाता है। आपका लक्ष्य गिलहरी के लिए सभी नट्स को इकट्ठा करके उन्हें एक-एक करके पेड़ के नीचे रखने के लिए न्यूनतम दूरी ढूंढना है। गिलहरी एक समय में अधिकतम एक नट ले जा सकती है और चार दिशाओं में आगे बढ़ सकती है - ऊपर, नीचे,

  1. C++ में आयत क्षेत्रफल II (Rectangle Area II) - ओवरलैपिंग आयतों का कुल क्षेत्रफल C++ में आयत क्षेत्रफल II (Rectangle Area II) - ओवरलैपिंग आयतों का कुल क्षेत्रफल

    समस्या विवरण हमें अक्ष-संरेखित (axis-aligned) आयतों की एक सूची दी गई है। प्रत्येक आयत rectangle[i] = {x1, y1, x2, y2} द्वारा दर्शाया गया है, जहां (x1, y1) निचले-बाएं कोने का बिंदु है और (x2, y2) ऊपरी-दाएं कोने का बिंदु है। हमें तल (plane) में सभी आयतों द्वारा कवर किए गए कुल क्षेत्रफल को ज्ञात करना