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

C++ में इनपुट में अनुमत डुप्लीकेट के साथ अलग-अलग सॉर्ट किए गए क्रमपरिवर्तन प्रिंट करें


इस प्रोग्रामिंग समस्या में, हमें एक स्ट्रिंग दी जाती है और हमें स्ट्रिंग तत्वों के अलग-अलग क्रमबद्ध क्रमपरिवर्तन मुद्रित करने होते हैं जिन्हें बनाया जा सकता है। इस समस्या के साथ शर्त यह है कि स्ट्रिंग में एक वर्ण हो सकता है जो एक से अधिक बार उत्पन्न होगा। साथ ही, दिए गए स्ट्रिंग को क्रमबद्ध क्रम में इनपुट किया जाता है।

आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं,

Input : ABD
Output : ABD , ADB , BAD , BDA , DAB , DBA
INPUT : RSTU
OUTPUT : RSTU , RSUT , RTSU , RTUS , RUST , RUTS , SRTU , SRUT , STRU , STUR , SURT , SUTR , TRSU , TRUS , TSRU , TSUR , TURS , TUSR , URST , URTS , USRT , USTR , UTRS , UTSR.

PERMUTATION एक विशिष्ट अनुक्रम या प्रकार के आधार पर एक सेट के सभी तत्वों को पुनर्व्यवस्थित कर रहा है। सेट का आदेश दिया जा सकता है या आदेश नहीं दिया जा सकता है।

अब जैसा कि हमने समस्या के बारे में सब कुछ जान लिया है। आइए समस्या को हल करने के लिए एक तर्क बनाने की कोशिश करें,

हम क्रमपरिवर्तन से संबंधित कुछ गणितीय सूत्र जानते हैं। स्ट्रिंग्स की कुल संख्या जो एक स्ट्रिंग द्वारा उत्पन्न होती है जिसमें n वर्ण होते हैं और सभी अलग-अलग होते हैं, n! द्वारा दिया जाता है। यदि स्ट्रिंग में ऐसे वर्ण हैं जो स्वयं को दोहरा रहे हैं, तो स्ट्रिंग्स की संख्या n! / मैं!

स्ट्रिंग STURS के लिए, उत्पन्न होने वाली स्ट्रिंग की कुल संख्या 5 है! / 2! =60. चूँकि s स्ट्रिंग में 2 बार आता है।

इसका उपयोग करके हम बनाए गए स्ट्रिंग की संख्या जानते हैं। अब, हमें उन स्ट्रिंग्स को बनाना है। इसके लिए पहले हम स्ट्रिंग को सॉर्ट करेंगे यदि नहीं (स्ट्रिंग इनपुट को सॉर्ट किया जाएगा) ताकि अंतिम स्ट्रिंग सॉर्ट किए गए रूप में हो। अब, स्ट्रिंग के पहले अक्षर को ठीक करें और बाकी सभी का क्रमचय ज्ञात करें और इसी तरह। यह सभी आवश्यक क्रमपरिवर्तन एक क्रमबद्ध तरीके से देगा।

उदाहरण के लिए,

इनपुट - आरएसटी

>तर्क -

इस स्ट्रिंग से कुल 3! =6 क्रमपरिवर्तन बनाए जा सकते हैं।

आइए R को ठीक करें और s और t से क्रमपरिवर्तन खोजें। यह 2 तार देगा RST, RTS.

इसी तरह S को ठीक करने से SRT, STR. मिलेगा और T को ठीक करने से TRS, TSR. मिलेगा

तो, यह आउटपुट देगा - RST, RTS, SRT, STR, TRS, TSR। जो क्रम में हैं।

अब, इस समस्या को हल करने के लिए एक प्रोग्राम बनाते हैं,

उदाहरण

#include <bits/stdc++.h>
using namespace std;
bool swaper(char str[], int start, int curr){
   for (int i = start; i < curr; i++)
      if (str[i] == str[curr])
      return 0;
   return 1;
}
void printPermutations(char str[], int index, int n){
   if (index >= n) {
      cout<<str<<"\t";
      return;
   }
   for (int i = index; i < n; i++) {
      bool check = swaper(str, index, i);
      if (check) {
         swap(str[index], str[i]);
         printPermutations(str, index + 1, n);
         swap(str[index], str[i]);
      }
   }
}
int main(){
   char str[] = "AABC";
   int n = strlen(str);
   cout<<"The string is : "<<str<<end;
   cout<<"The distinct sorted permutations are : \t";
   printPermutations(str, 0, n);
   return 0;
}

आउटपुट

The string is : AABC
The distinct sorted permutations are : AABC AACB
   ABAC ABCA ACBA ACAB BAAC
   BACA BCAA CABA CAAB CBAA

  1. सी ++ में डुप्लिकेट के साथ क्रमबद्ध सरणी में समान (या मध्य) बिंदु खोजें

    मान लीजिए कि हमारे पास n तत्वों के साथ एक क्रमबद्ध सरणी है। सरणी क्रमबद्ध है। हमें यह पता लगाना है कि क्या कोई तत्व उस सरणी में मौजूद है जहां से छोटे तत्वों की संख्या बड़े तत्वों की संख्या के समान है। यदि समान बिंदु सरणी में कई बार दिखाई देता है, तो पहली घटना का सूचकांक लौटाएं। यदि ऐसा कोई बिंदु मौज

  1. C++ में अनुमत डुप्लीकेट के साथ एक सरणी में एक निश्चित बिंदु खोजें

    यहां हम देखेंगे कि किसी दिए गए सरणी में निश्चित बिंदु कैसे खोजें। सरणी में एक तत्व को निश्चित बिंदु के रूप में दर्शाया जाएगा यदि मान उसके सूचकांक के समान है। यदि कोई है तो यह प्रोग्राम मान लौटाएगा, अन्यथा -1 लौटाएगा। सरणी ऋणात्मक संख्याएँ भी धारण कर सकती है। और डेटा तत्वों को क्रमबद्ध किया जाता है।

  1. जावा प्रोग्राम एक स्ट्रिंग के अलग क्रमपरिवर्तन मुद्रित करने के लिए

    एक स्ट्रिंग के अलग-अलग क्रमपरिवर्तन मुद्रित करने के लिए, जावा प्रोग्राम इस प्रकार है - उदाहरण आयात करें } विवरण झूठा है; } स्थिर ArrayList विशिष्ट_पैटर्न(स्ट्रिंग str){ अगर (str.length() ==0){ ArrayList base_Val =new ArrayList<>(); base_Val.add(); वापसी बेस_वैल; } चार सीएच =str.charAt(0); स्ट्रिंग r