Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การเรียงสับเปลี่ยน C ++ ของสตริงที่กำหนดโดยใช้STL


การเรียงสับเปลี่ยนของสตริงเกิดขึ้นเมื่ออักขระของสตริงที่กำหนดถูกจัดเรียงใหม่ในรูปแบบใดๆ ในบทช่วยสอนนี้ เราจะพูดถึงวิธีที่เราสามารถพิมพ์การเรียงสับเปลี่ยนทั้งหมดของสตริงที่กำหนดโดยใช้ไลบรารีเทมเพลตมาตรฐานของ C++ เป็นต้น

Input : s = “ADT”

Output : “ADT”, “ATD”, “DAT”, “DTA”, “TAD”, “TDA”

Explanation : In the given output as you can see all the string are made up of same three character present in our string and are just rearranged thus they fit in the definition of a permutation of a string now there is one more thing to note these are all the permutations possible of string s.

มีสองวิธีที่เราสามารถพิมพ์พีชคณิตทั้งหมดของสตริงที่กำหนด

หมุน()

วิธีแรกที่เราจะใช้คือการใช้วิธีการหมุน ในวิธีนี้ เราจะใช้ฟังก์ชันการหมุนของ STL ซึ่งใช้ในการหมุนสตริงของเรา และเราจะใช้การเรียกซ้ำเพื่อพิมพ์การเรียงสับเปลี่ยน

ตัวอย่าง

รหัส C++ สำหรับวิธีการข้างต้น

#include<bits/stdc++.h>
using namespace std;
void permutations(string s, string ans){
    if(s.size() == 0) {
// when our string which needs to
//be rotated becomes empty then it means
//that our permutation is stored in ans
        cout << ans << "\n";
        return ;
    }
    for(int i = 0; i < s.size(); i++){
        permutations(s.substr(1), ans + s[0]);
        // we are adding the
        // first character in our ans
        // passing all elements from index 1 in our
        // rotate string for next function.
        rotate(s.begin(), s.begin()+1, s.end());
        //rotating such that our second element becomes first
    }
}
int main(){
    string s = "ADT"; // given string
    permutations(s, "");
    return 0;
}

ผลลัพธ์

ADT
ATD
DTA
DAT
TAD
TDA

Next_Permutation

ตอนนี้เราจะใช้ฟังก์ชันอื่นของ STL กล่าวคือ next_Permutation ตามที่ชื่อแนะนำ การกลับรายการของฟังก์ชันนี้คือการเปลี่ยนลำดับถัดไปของสตริงนี้หรือไม่ หากไม่ จะส่งกลับค่าเท็จ

ดังที่คุณทราบ ฟังก์ชันนี้จะตรวจสอบการเปลี่ยนแปลงครั้งถัดไป ดังนั้น เราต้องเรียงลำดับสตริงตามพจนานุกรมก่อน เพื่อให้ได้การเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมด

ตัวอย่าง

รหัส C++ สำหรับวิธีการข้างต้น

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s = "ADT"; // given string
    sort(s.begin(), s.end()); // sorting the string
    do{
        cout << s << "\n"; // printing the permutations
    }while(next_permutation(s.begin(), s.end())); // till next_permutations returns false
    return 0;
}

ผลลัพธ์

ADT
ATD
DAT
DTA
TAD
TDA

ในโปรแกรมด้านบนนี้ เราจัดเรียงสตริงของเรา จากนั้นด้วยความช่วยเหลือของฟังก์ชัน next_permutation เราจะพิมพ์การเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมด

บทสรุป

ในบทช่วยสอนนี้ เราพิมพ์การเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของสตริงที่ระบุโดยใช้ความช่วยเหลือของ STL ใน C++ นอกจากนี้เรายังได้เรียนรู้โปรแกรม C ++ สำหรับปัญหานี้และฟังก์ชัน STL ที่จำเป็นและการใช้งาน เราหวังว่าคุณจะพบว่าบทช่วยสอนนี้มีประโยชน์