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

C++ में सभी स्ट्रिंग्स को समान बनाने के लिए न्यूनतम चाल से अंत संचालन

समस्या कथन

दिए गए n तार जो एक दूसरे के क्रमपरिवर्तन हैं। हमें एक ऑपरेशन के साथ सभी स्ट्रिंग्स को समान बनाने की आवश्यकता है जो किसी भी स्ट्रिंग के पहले अक्षर को उसके अंत तक ले जाती है।

उदाहरण

अगर arr[] ={"abcd", "cdab"} तो 2 चालों की आवश्यकता है।

  • आइए हम पहली स्ट्रिंग "abcd" लेते हैं। वर्ण 'a' को स्ट्रिंग के अंत में ले जाएँ। इस ऑपरेशन के बाद स्ट्रिंग "बीसीडीए" बन जाती है
  • अब वर्ण 'b' को स्ट्रिंग के अंत में ले जाएँ। इस ऑपरेशन के बाद स्ट्रिंग "cdab" बन जाती है। जो बदले में दोनों तारों को बराबर बनाता है

एल्गोरिदम

  • पहली स्ट्रिंग लें। आइए इसे 'str1' कहते हैं।
  • str1 से str1 को निम्नानुसार जोड़कर एक अस्थायी स्ट्रिंग बनाएं -

    अस्थायी =str1 + str1

  • अन्य सभी स्ट्रिंग्स को वर्तमान लक्ष्य के समान बनाने के लिए आवश्यक घुमावों की गणना करें
  • सभी स्ट्रिंग के लिए उपरोक्त चरणों को दोहराएं और सभी गणनाओं की न्यूनतम वापसी करें।

उदाहरण

#include <iostream>
#include <string>
#include <algorithm>
#include <climits>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;
int minMoves(string str[], int n) {
   int minCnt = INT_MAX;
   for (int i = 0; i < n; ++i) {
      int cnt = 0;
      for (int j = 0; j < n; ++j) {
         string temp = str[j] + str[j];
         int index = temp.find(str[i]);
         if (index != string::npos) {
            cnt += index;
         }
      }
      minCnt = min(cnt, minCnt);
   }
   return minCnt;
}
int main() {
   string str[] = {"abcd", "cdab", "bacd", "cdba"};
   cout << "Minimum moves: " << minMoves(str, SIZE(str)) << endl;
   return 0;
}

आउटपुट

जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -

Minimum moves: 2

  1. C++ का उपयोग करके दो स्ट्रिंग्स को समान बनाने के लिए आवश्यक न्यूनतम संख्या में ऑपरेशन।

    समस्या कथन दो स्ट्रिंग्स str1 और str2 को देखते हुए, दोनों स्ट्रिंग्स में a और b अक्षर होते हैं। दोनों तार समान लंबाई के हैं। दोनों स्ट्रिंग्स में एक _ (रिक्त स्थान) है। कार्य निम्न कार्यों की न्यूनतम संख्या करके पहली स्ट्रिंग को दूसरी स्ट्रिंग में परिवर्तित करना है - यदि _ स्थिति I पर है तो _ को

  1. C++ में एक स्ट्रिंग पैलिंड्रोम बनाने के लिए विलोपन की न्यूनतम संख्या।

    समस्या कथन आकार एन की एक स्ट्रिंग को देखते हुए। कार्य स्ट्रिंग पैलिंड्रोम बनाने के लिए वर्णों की न्यूनतम संख्या को हटाना है। यदि दी गई स्ट्रिंग abcda है तो हम इसे पैलिंड्रोम बनाने के लिए पहले और अंतिम को छोड़कर किन्हीं भी 2 वर्णों को हटा सकते हैं। अगर हम अक्षर b और c को हटाते हैं तो ada स्ट्रिं

  1. सी ++ में सरणी के सभी तत्वों को समान बनाने के लिए न्यूनतम डिलीट ऑपरेशंस।

    समस्या कथन n तत्वों की एक सरणी को देखते हुए जैसे कि तत्व दोहरा सकते हैं। हम सरणी से किसी भी संख्या में तत्वों को हटा सकते हैं। कार्य इसे समान बनाने के लिए सरणी से हटाए जाने वाले तत्वों की न्यूनतम संख्या को खोजना है। arr[] = {10, 8, 10, 7, 10, -1, -4, 12} सभी सरणी तत्वों को समान बनाने के लिए हमें ह