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

C++ में तीन से विभाज्य महत्तम योग


मान लीजिए हमारे पास पूर्णांकों की एक सरणी nums है, हमें दिए गए सरणी के तत्वों का अधिकतम संभव योग ढूंढना है जो तीन से विभाज्य हो। उदाहरण के लिए, यदि इनपुट [3,6,5,1,8] है, तो आउटपुट 18 होगा, क्योंकि उपसरणी [3,6,1,8] का योग 18 है, जो 3 से विभाज्य है।

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

  • n := nums सरणी का आकार
  • आकार (n + 1) x 3 का एक 2D सरणी dp बनाएं
  • dp[0, 0] := 0, dp[0,1] := -inf, dp[0,2] := -inf सेट करें
  • i को 1 से n तक लूप करें:
    • x := nums[i - 1]
    • j को 0 से 2 तक लूप करें, dp[i, j] := dp[i - 1, j]
    • j को 0 से 2 तक लूप करें
      • k := (x + j) mod 3
      • dp[i, k] := max(dp[i, k], dp[i - 1, j] + x)
  • dp[n, 0] लौटाएं

उदाहरण

#include <bits/stdc++.h> using namespace std; class Solution {    public:    int maxSumDivThree(vector<int>& nums) {       int n = nums.size();       int dp[n+1][3];       dp[0][0] = 0;       dp[0][1] = INT_MIN;       dp[0][2] = INT_MIN;       for(int i = 1; i <= n; i++){          int x = nums[i-1];          for(int j = 0; j < 3; j++)dp[i][j] = dp[i-1][j];          for(int j = 0; j < 3; j++){             int k = (x + j) % 3;             dp[i][k] = max(dp[i][k],dp[i-1][j] + x);          }       }       return dp[n][0];    } }; main(){    vector<int> v = {3,6,5,1,8};    Solution ob;    cout << (ob.maxSumDivThree(v)); }

इनपुट

[3,6,5,1,8]

आउटपुट

18

  1. - C++ में संयोजन योग II (Combination Sum II)

    मान लीजिए हमारे पास उम्मीदवार संख्याओं का एक समूह है (सभी तत्व अद्वितीय हैं) और एक लक्ष्य संख्या। हमें उम्मीदवारों में उन सभी अद्वितीय संयोजनों को ढूंढना है जहां उम्मीदवार संख्याओं का योग दिए गए लक्ष्य के बराबर हो। वही संख्या उम्मीदवारों से एक से अधिक बार नहीं चुनी जाएगी। यदि तत्व [2,3,6,7,8] हैं औ

  1. - C++ में तीन स्टैक का संभावित समान अधिकतम योग ज्ञात करें

    मान लीजिए हमारे पास धनात्मक संख्याओं के तीन स्टैक हैं। हमें शीर्ष तत्वों को हटाने की अनुमति के साथ स्टैक के संभावित समान अधिकतम योग को ज्ञात करना है। स्टैक को सरणी के रूप में दर्शाया गया है। सरणी का पहला सूचकांक स्टैक के शीर्ष तत्व को दर्शाता है। मान लीजिए स्टैक तत्व हैं जैसे [3, 10], [4, 5] और [2,

  1. - C++ में सम ऐरे पजल (बिना घटाव ऑपरेटर के)

    यहां हम ऐरे से संबंधित एक रोचक समस्या देखेंगे। n तत्वों वाला एक ऐरे है। हमें n तत्वों का एक और ऐरे बनाना है। लेकिन दूसरे ऐरे का i-th स्थान पहले ऐरे के i-th तत्व को छोड़कर सभी तत्वों का योग रखेगा। और एक प्रतिबंध है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते। यदि हम घटाव ऑपरेशन का उपयोग कर