切換
舊版
前往
大廳
主題

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

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

  這是一個可以列出所有排列的程式,但是執行速度很慢,要是太多可能要花一段時間就是。
來看看例子:






以下是原始碼:

#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過的檔案:

話說之前這篇:
默默改進中,可以看到成長,挺有趣的。


創作回應

貓貓風 ฅ●ω●ฅ
用遞迴寫的程式執行速度本來就會比較慢~
2013-08-04 14:31:18
鍋貼企鵝
這個估計要O(n!)。 [e20]
2013-08-04 17:11:22
蒼月さん (停用中)
好久沒碰C++跟C#了...[e3]
2013-08-04 14:34:34
別動肝火
好久沒碰都忘了...
2013-08-04 15:51:08

更多創作