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

C++ . में स्ट्रोबोग्रामेटिक नंबर II

मान लीजिए कि हमारी लंबाई n है। हमें n लंबाई की सभी स्ट्रोबोग्रामेटिक संख्याएं ढूंढनी होंगी।

जैसा कि हम जानते हैं कि एक स्ट्रोबोग्रामेटिक संख्या एक संख्या है जो 180 डिग्री घुमाए जाने पर समान दिखती है।

इसलिए, यदि इनपुट n =2 जैसा है, तो आउटपुट ["11", "69", "88", "96"]

होगा

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

  • एक सरणी रिट परिभाषित करें

  • यदि n विषम है, तो -

    • रिट के अंत में "0" डालें

    • रिट के अंत में "1" डालें

    • रिट के अंत में "8" डालें

  • अन्यथा

    • रिट के अंत में रिक्त स्ट्रिंग डालें

  • n> 1 के लिए, n अपडेट करें:=n - 2, करें −

    • एक सरणी अस्थायी परिभाषित करें

    • इनिशियलाइज़ i:=0 के लिए, जब i

      • एस:=सेवानिवृत्त [i]

      • यदि n> 3, तो -

        • टेम्परेचर के अंत में "0" कॉन्टेनेट का कॉन्टेनेट "0" डालें

      • टेम्परेचर के अंत में "1" कॉन्टेनेट का कॉन्टेनेट "1" डालें

      • टेम्परेचर के अंत में "8" कॉन्टेनेट का कॉन्टेनेट "8" डालें

      • टेंपरेचर के अंत में "6" कॉन्टेनेट का कॉन्टेनेट "9" डालें

      • टेम्परेचर के अंत में "9" कॉन्टेनेट का कॉन्टेनेट "6" डालें

    • रिट:=अस्थायी

  • वापसी रिट

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto< v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<string< findStrobogrammatic(int n) {
      vector<string< ret;
      if (n & 1) {
         ret.push_back("0");
         ret.push_back("1");
         ret.push_back("8");
      }
      else {
         ret.push_back("");
      }
      for (; n > 1; n -= 2) {
         vector<string< temp;
         for (int i = 0; i < ret.size(); i++) {
            string s = ret[i];
            if (n > 3) {
               temp.push_back("0" + s + "0");
            }
            temp.push_back("1" + s + "1");
            temp.push_back("8" + s + "8");
            temp.push_back("6" + s + "9");
            temp.push_back("9" + s + "6");
         }
         ret = temp;
      }
      return ret;
   }
};
main(){
   Solution ob;
   print_vector(ob.findStrobogrammatic(3));
}

इनपुट

3

आउटपुट

[101, 808, 609, 906, 111, 818, 619, 916, 181, 888, 689, 986, ]

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. C++ में एडम नंबर

    इस खंड में हम देखेंगे कि एक प्रोग्राम कैसे लिखा जाता है जो यह जांच सकता है कि दी गई संख्या एडम नंबर है या नहीं। कोड में गोता लगाने से पहले आइए देखें कि एडम नंबर क्या है? आदम संख्या एक संख्या है मान लीजिए n, तो यदि n का वर्ग और n के विपरीत का वर्ग एक-दूसरे के विपरीत हों, तो वह संख्या आदम संख्या होती