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

C++ में अंकगणितीय स्लाइस


मान लीजिए संख्याओं का एक अनुक्रम अंकगणितीय कहलाता है यदि इसमें कम से कम तीन तत्व होते हैं और किन्हीं दो लगातार तत्वों के बीच का अंतर समान होता है। उदाहरण के लिए, ये अंकगणितीय अनुक्रम हैं: [1, 3, 5, 7, 9], [7, 7, 7, 7], [3, -1, -5, -9], लेकिन निम्नलिखित अनुक्रम अंकगणितीय नहीं है: [1, 1, 2, 5, 7]

अब N संख्याओं से युक्त एक शून्य-अनुक्रमित सरणी A दी गई है। उस दी गई सरणी का एक स्लाइस पूर्णांकों का कोई भी युग्म (P, Q) है जैसे कि 0 <= P < Q < N। यहां सरणी A का एक स्लाइस (P, Q) अंकगणितीय कहलाता है यदि अनुक्रम: A[P], A[P+1], ..., A[Q-1], A[Q] अंकगणितीय है। फ़ंक्शन को सरणी A में अंकगणितीय स्लाइस की संख्या ढूंढनी चाहिए।

उदाहरण के लिए, यदि इनपुट [1,2,3,4] है, तो आउटपुट 3 होगा, क्योंकि तत्व [1,2,3], [2,3,4] और [1,2,3,4] हैं।

हल करने के चरण

  • ret := 0, n := A का आकार, आकार n की एक सरणी dp बनाएं
  • i को 2 से n-1 तक लूप करें
    • यदि A[i] - A[i-1] = A[i-1] - A[i-2], तो
      • dp[i] := 1 + dp[i-1]
      • ret को dp[i] से बढ़ाएं
  • ret वापस करें

उदाहरण (C++)

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

#include <bits/stdc++.h> using namespace std; class Solution {    public:       int numberOfArithmeticSlices(vector<int>& A) {          int ret = 0;          int n = A.size();          vector <int> dp(n);          for(int i = 2; i < n; i++){             if(A[i] - A[i - 1] == A[i - 1] - A[i - 2]){                dp[i] = 1 + dp[i - 1];                ret += dp[i];             }          }          return ret;       }   }; main(){    vector<int> v = {1,2,3,4};    Solution ob;    cout << (ob.numberOfArithmeticSlices(v)); }

इनपुट

[1,2,3,4]

आउटपुट

3
  1. C++ में 3n स्लाइस वाली पिज्जा C++ में 3n स्लाइस वाली पिज्जा

    समस्या विवरण मान लीजिए 3n स्लाइस वाली एक पिज्जा है जिसके स्लाइस विभिन्न आकार के हैं। मैं और मेरे दो दोस्त पिज्जा के स्लाइस निम्नानुसार लेंगे: मैं कोई भी पिज्जा स्लाइस चुनूंगा। मेरा दोस्त अमल मेरे चुने हुए स्लाइस के एंटी-क्लॉकवाइज दिशा में अगला स्लाइस लेगा। मेरा दोस्त बिमल मेरे चुने हुए स्लाइस के क

  1. - C++ में सरल अंकगणित ऑपरेटर्स उदाहरण प्रोग्राम

    C++ में 5 बुनियादी अंकगणित ऑपरेटर्स हैं। वे हैं: जोड़ (+) घटाव (-) विभाजन (/) गुणा (*) मॉड्यूलो (%) ये ऑपरेटर्स C++ में किसी भी अंकगणित ऑपरेशन पर कार्य कर सकते हैं। आइए एक उदाहरण देखें: उदाहरण #include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c;

  1. - C++ में अंकगणितीय ऑपरेटर्स

    C++ में 5 बुनियादी अंकगणितीय ऑपरेटर्स होते हैं। वे हैं: जोड़ (+) घटाव (-) भाग (/) गुणा (*) मॉड्यूलो (%) उदाहरण ये ऑपरेटर्स C++ में किसी भी अंकगणितीय संक्रिया पर कार्य कर सकते हैं। आइए एक उदाहरण देखते हैं: #include <iostream> using namespace std; int main() { int a = 21; int b = 10;