ETH官方钱包

切換
舊版
前往
大廳
主題

【C++】列出所有排列!

鍋貼企鵝 | 2013-08-04 13:03:39 | 巴幣 12 | 人氣 14310

  這是一個(gè)可以列出所有排列的程式,但是執(zhí)行速度很慢,要是太多可能要花一段時(shí)間就是。
來(lái)看看例子:






以下是原始碼:

#include<iostream>
#include<cstdlib>

using namespace std;
void perm(char *ch,int a,int b);

    int n;
    int c=0;

int main()
{
    cout << "enter a number you want to perm : "<<endl;
    cin >> n;
    char list[n];
    cout << "and type "<< n << " alphat, for example 4 > a b c d." <<endl;
    for(int i=0;i<n;i++)
            cin >> list[i];
    
    perm(list,0,n-1);
    cout << c <<" type for " << n << " permutation"<<endl;
    system("pause");
    return 0;
}

void perm(char *ch,int a,int b)
{
     if(a==b)
     {
             for(int i=0;i<n;i++)
                     cout << ch[i];
             cout << endl;
             c++;
     }
     else
         for(int j=a;j<n;j++)
         {        
                  swap(ch[a],ch[j]);
                  perm(ch,a+1,b);
                  swap(ch[a],ch[j]);
         }
}




這是compile過(guò)的檔案:

話說(shuō)之前這篇:
默默改進(jìn)中,可以看到成長(zhǎng),挺有趣的。


創(chuàng)作回應(yīng)

貓貓風(fēng) ?●ω●?
用遞迴寫(xiě)的程式執(zhí)行速度本來(lái)就會(huì)比較慢~
2013-08-04 14:31:18
鍋貼企鵝
這個(gè)估計(jì)要O(n!)。 [e20]
2013-08-04 17:11:22
蒼月さん (停用中)
好久沒(méi)碰C++跟C#了...[e3]
2013-08-04 14:34:34
別動(dòng)肝火
好久沒(méi)碰都忘了...
2013-08-04 15:51:08

相關(guān)創(chuàng)作

更多創(chuàng)作