جایگشت با حفظ ترتیب حروف - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

جایگشت با حفظ ترتیب حروف

+1 امتیاز
میخواهم برنامه بنویسم که دو آرایه از نوع کاراکتر را دریافت کند و تمام حالات ممکن را در خروجی چاپ کند.

با این شرط که ترتیب حروف در هر آرایه ورودی را در خروجی حفظ کند.

مثلا :

abc

mn

abcmn abmnc amnbc mnabc mabcn manbc mabnc ambnc ambcn abmcn
سوال شده بهمن 11, 1392  بوسیله ی Azar (امتیاز 628)   29 43 61
دوباره تگ گذاری شد مهر 4, 1393 بوسیله ی BlueBlade

2 پاسخ

+3 امتیاز
 
بهترین پاسخ

در ضمن از این راه بهینه تر هم می تونی پیدا کنی .
 

#include <iostream>
#include <vector>

using namespace std;

std::vector<string> result;
string a;
string b;

void permutation(const string &c,int loc,int pt)
{
    if(pt>=b.size())
        return;

    for(int i=loc;i<c.size()+1;i++)
    {
        string temp=c;
        temp.insert(i,1,b[pt]);
        permutation(temp,i+1,pt+1);

        if(pt==b.size()-1)
           result.push_back(temp);
    }
}

int main()
{
    cin>>a;
    cin>>b;

    permutation(a,0,0);

    for(int i=0;i<result.size();i++)
        cout<<result[i]<<endl;

}

 

پاسخ داده شده بهمن 11, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد بهمن 13, 1392 بوسیله ی Azar
+2 امتیاز

سلام به این شکل فکر کن الگوشو راحت میتونی در بیاری تابع بازگشتیشو بنویسی :

//abc mn
mnabc
manbc
mabnc
mabcn

amnbc
ambnc
ambcn
abmnc
abmcn

abcmn

//abcd pqr 
pqrabcd
pqarbcd
pqabrcd
pqabcrd
pqabcdr

paqrbcd
paqbrcd
paqbcrd
paqbcdr
,
......

 

پاسخ داده شده بهمن 11, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
توی ارایه کاراکتری نمیشه از شیفت استفاده کرد ؟
...