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

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

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

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

  • n :=nums array का आकार
  • एक 2d सरणी dp आकार (n + 1) x 3 बनाएं
  • सेट डीपी[0, 0]:=0, डीपी[0,1]:=-इन्फ, डीपी[0,2] :=इंफ
  • i के लिए 1 से n की सीमा में;
    • x :=nums[i - 1]
    • जे के लिए 0 से 2 की सीमा में, dp[i, j] :=dp[i – 1, j]
    • जे के लिए 0 से 2 की सीमा में
      • k :=(x + j) मॉड 3
      • dp[i, k] :=अधिकतम dp[i, k] और dp[i – 1, j] + x
  • रिटर्न डीपी[एन, 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

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

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

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

  1. सी ++ में एक सम ऐरे पहेली?

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