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

C++ में मान्य त्रिभुज त्रिक की संख्या गिनने का कार्यक्रम

मान लीजिए कि हमारे पास संख्याओं की एक सरणी है, हमें उस सरणी से चुने गए त्रिकों की संख्या ज्ञात करनी है जो त्रिभुज बना सकते हैं यदि हम उन्हें त्रिभुज की भुजाओं की लंबाई के रूप में लेते हैं। तो अगर इनपुट [2,2,3,4] जैसा है, तो परिणाम 3 होगा क्योंकि पहले 2 का उपयोग करते हुए तीन ट्रिपल [2,3,4] हैं, [2,3,4] दूसरे 2 का उपयोग करते हुए, और [2,2,3]।

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

  • ret :=0, n :=अंकों का आकार, क्रमित अंक

  • मैं के लिए n - 1 से 0 तक की श्रेणी में हूं

    • दाएँ :=i − 1, बाएँ :=0

    • जबकि बाएं <दाएं

      • योग:=अंक [बाएं] + अंक [दाएं]

      • अगर योग> अंक [i], तो दाएं से बाएं बढ़ाएं, दाएं 1 से घटाएं, अन्यथा 1 से बाएं बढ़ाएं

  • वापसी रिट

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int triangleNumber(vector<int>& nums) {
      int ret = 0;
      int n = nums.size();
      sort(nums.begin(), nums.end());
      for(int i = n − 1; i >= 0; i−−){
         int right = i − 1;
         int left = 0;
         while(left < right){
            int sum = nums[left] + nums[right];
            if(sum > nums[i]){
               ret += right − left;
               right−−;
            }else left++;
         }
      }
      return ret;
   }
};
main(){
   vector<int> v = {2,2,3,4};
   Solution ob;
   cout << (ob.triangleNumber(v));
}

इनपुट

[2,2,3,4]

आउटपुट

3

  1. सी ++ प्रोग्राम डोडेकैगन की संख्या गिनने के लिए जिसे हम आकार डी बना सकते हैं

    मान लीजिए कि हमारे पास एक संख्या d है। विचार करें कि अनंत संख्या में वर्गाकार टाइलें हैं और भुजाओं की लंबाई के साथ नियमित त्रिकोणीय टाइलें हैं। हमें यह पता लगाना है कि इन टाइलों का उपयोग करके हम कितने तरीकों से नियमित डोडेकागन (12-पक्षीय बहुभुज) बना सकते हैं। यदि उत्तर बहुत बड़ा है, तो परिणाम मोड 99

  1. सी ++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए संचालन की संख्या की गणना करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है। अब एक ऑपरेशन पर विचार करें जहां हम एक सेल लेते हैं और इसे और उसके सभी पड़ोसी कोशिकाओं (ऊपर, नीचे, बाएं, दाएं) को फ्लिप करते हैं। हमें आवश्यक संक्रियाओं की न्यूनतम संख्या ज्ञात करनी होगी जैसे कि मैट्रिक्स में केवल 0s हों। अगर कोई समाधान नहीं है, तो -1 लौ

  1. सी++ प्रोग्राम एक ऐरे में व्युत्क्रम की गणना करने के लिए

    काउंट इनवर्जन का अर्थ है किसी सरणी को सॉर्ट करने के लिए आवश्यक स्विच की संख्या। उलटा गिनती =0, जब सरणी को क्रमबद्ध किया जाता है। उलटा गिनती =अधिकतम, जब सरणी को उल्टे क्रम में क्रमबद्ध किया जाता है। आइए एक सरणी में उलटा गिनने के लिए एक C++ प्रोग्राम विकसित करें। एल्गोरिदम Begin    Function