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.

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

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

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

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

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

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

इनपुट - RST

तर्क -

इस स्ट्रिंग से कुल 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. - C++ में डुप्लिकेट के साथ सॉर्टेड सरणी में समान (या मध्य) बिंदु ज्ञात करें

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

  1. - C++ में डुप्लिकेट तत्वों वाली सरणी में फिक्स्ड पॉइंट ढूंढें

    समस्या विवरण एक क्रमबद्ध सरणी में फिक्स्ड पॉइंट वह तत्व है जिसका मान उसके सूचकांक के बराबर होता है। सरणी में नकारात्मक संख्याएं और डुप्लिकेट तत्व हो सकते हैं। यदि फिक्स्ड पॉइंट मौजूद है तो उसका मान वापस करें, अन्यथा -1 वापस करें। हल दृष्टिकोण बाइनरी खोज का उपयोग करके O(log n) समय में हल करें। डुप्

  1. - जावा प्रोग्राम: स्ट्रिंग के विशिष्ट क्रमपरिवर्तन प्रिंट करना

    उदाहरणimport java.util.ArrayList; public class Demo { static boolean is_present(String my_str, ArrayList rem) { for (String str : rem) { if (str.equals(my_str)) return true; } return false; } static ArrayList distinct_pattern