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

ऐरे का निर्माण करें जहाँ आप C++ में अधिकतम सटीक K तुलना पा सकते हैं

मान लीजिए कि हमारे पास तीन पूर्णांक n, m और k हैं। यदि हमारे पास सकारात्मक पूर्णांकों की एक सरणी के अधिकतम तत्व को खोजने के लिए निम्नलिखित एल्गोरिथम है -

max_val := -1
max_ind := -1
search_cost := 0
n := size of arr
for initialize i := 0, when i < n, update (increase i by 1), do:
   if max_val < arr[i], then:
      max_val := arr[i]
      max_ind := i
      (increase search_cost by 1)
return max_ind

हमें सरणी को एआर बनाना है जिसमें निम्नलिखित मानदंड हैं:एआर में बिल्कुल n पूर्णांक हैं। सभी तत्व गिरफ्तार [i] 1 से मी (सहित) (0 <=i

इसलिए, यदि इनपुट n =2, m =3, k =1 जैसा है, तो आउटपुट 6 होगा क्योंकि संभावित सरणियाँ हैं [1, 1], [2, 1], [2, 2], [3 , 1], [3, 2] [3, 3]

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

  • मी :=10^9 + 7

  • फ़ंक्शन ऐड () को परिभाषित करें, इसमें a, b,

    . लगेगा
  • वापसी ((एक मॉड एम) + (बी मॉड एम)) मॉड एम

  • आकार की एक सरणी dp परिभाषित करें:54 x 54 x 105।

  • फ़ंक्शन सहायता () को परिभाषित करें, यह idx, m, k, currVal, n,

    लेगा
  • अगर के <0, तो -

    • वापसी 0

  • अगर idx n + 1 के समान है, तो -

    • जब k 0 हो तब सही लौटें

  • अगर dp[idx, k, currVal + 1] -1 के बराबर नहीं है, तो -

    • वापसी dp[idx, k, currVal + 1]

  • रिट:=0

  • इनिशियलाइज़ करने के लिए i :=1, जब i <=m, अपडेट (i से 1 की वृद्धि), करें -

    • अगर मैं> currVal, तो -

      • ret :=add(help(idx + 1, m, k-1), max(currVal,i), n), ret)

    • अन्यथा

      • ret :=add(help(idx + 1, m, k, max(currVal,i), n), ret)

  • वापसी dp[idx, k, currVal + 1] =ret

  • मुख्य विधि से निम्न कार्य करें -

  • इनिशियलाइज़ करने के लिए i:=0, जब i <54, अपडेट करें (1 से बढ़ाएँ), करें -

    • इनिशियलाइज़ j :=0 के लिए, जब j <54, अपडेट करें (j को 1 से बढ़ाएँ), करें -

      • k :=0 को इनिशियलाइज़ करने के लिए, जब k <105, अपडेट करें (1 से k बढ़ाएँ), करें -

        • डीपी [आई, जे, के] :=-1

    • रिट :=सहायता(1, एम, के, -1, एन)

  • वापसी रिट

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
const lli m = 1e9 + 7;
class Solution {
public:
   lli add(lli a, lli b) {
      return ((a % m) + (b % m)) % m;
   }
   int dp[54][54][105];
   int help(int idx, int m, int k, int currVal, int n) {
      if (k < 0)
         return 0;
      if (idx == n + 1) {
         return k == 0;
      }
      if (dp[idx][k][currVal + 1] != -1)
         return dp[idx][k][currVal + 1];
      int ret = 0;
      for (int i = 1; i <= m; i++) {
         if (i > currVal) {
            ret = add(help(idx + 1, m, k - 1, max(currVal, i), n), ret);
         }
         else {
            ret = add(help(idx + 1, m, k, max(currVal, i), n), ret);
         }
      }
      return dp[idx][k][currVal + 1] = ret;
   }
   int numOfArrays(int n, int m, int k) {
      for (int i = 0; i < 54; i++)
         for (int j = 0; j < 54; j++)
            for (int k = 0; k < 105; k++)
               dp[i][j][k] = -1;
      int ret = help(1, m, k, -1, n);
      return ret;
   }
};
main() {
   Solution ob;
   cout << (ob.numOfArrays(2, 3, 1));
}

इनपुट

2, 3, 1

आउटपुट

6

  1. सी ++ में एसटीएल का उपयोग करके ऐरे का न्यूनतम और अधिकतम तत्व कैसे खोजें?

    यहां हम देखेंगे कि किसी सरणी से अधिकतम और न्यूनतम तत्व कैसे खोजें। तो यदि सरणी [12, 45, 74, 32, 66, 96, 21, 32, 27] की तरह है, तो अधिकतम तत्व 96 है, और न्यूनतम तत्व 12 है। हम max_element () फ़ंक्शन और min_element () का उपयोग कर सकते हैं फ़ंक्शन, एल्गोरिथम में मौजूद है। हेडर फ़ाइल क्रमशः अधिकतम और न्

  1. सी ++ में एसटीएल का उपयोग कर ऐरे का अधिकतम तत्व कैसे खोजें?

    यहां हम देखेंगे कि अधिकतम तत्व कैसे खोजें। तो अगर सरणी [12, 45, 74, 32, 66, 96, 21, 32, 27] की तरह है, तो अधिकतम तत्व 96 है। हम एल्गोरिदम में मौजूद max_element () फ़ंक्शन का उपयोग कर सकते हैं। प्राप्त करने के लिए हेडर फ़ाइल अधिकतम तत्व। उदाहरण #include<iostream> #include<algorithm> using

  1. मुझे वर्तमान C या C++ मानक दस्तावेज़ कहाँ मिल सकते हैं?

    आप वर्तमान C मानक दस्तावेज़ ANSI वेब स्टोर पर पा सकते हैं। https://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2FISO%2FIEC+9899-2012 आप खरीदने के लिए ISO C++ वेबसाइट पर वर्तमान C++ मानक दस्तावेज़ पा सकते हैं - https://www.iso.org/standard/68564.html आईएसओ सी++ मानक का वर्किंग ड्राफ्ट https://i