关闭

c++实现数字的全排列

121人阅读 评论(0) 收藏 举报
分类:
#include <iostream>
#include <vector>
using namespace std;


void recursivePrint(vector<char> number,int length,int index)
{
        if(index == length - 1)
        {
                for(int i = 0 ; i < length; ++i)
                        cout << number[i] ;
                cout << endl;
                return;
        }
        for(int i = 0; i < 10; ++i)
        {
                number[index + 1] = i + '0';
                recursivePrint(number,length,index + 1); 
        }
}


void printFullSortNumbers(int n)
{
        if(n == 0)
                return ;
        vector<char> res(n+1,'0');
        for(int i = 0; i < 10; i ++) 
        {
                res[0] = i +'0';
                recursivePrint(res,n,0);
        }
}


int main()
{
        int a = 2;
        printFullSortNumbers(a);
        return 0;
}

第二种方法,其实跟上面类似


#include <iostream>
using namespace std;
void printRecurve(int a[],int len,int k)
{
        if(len  == k)
        {
                for(int i = 0; i <= len; ++i)
                        cout << a[i] ;
                cout <<endl;
        }
        else
        {
                for(int idx = k ; idx <= len; ++idx)
                {
                        swap(a[idx],a[k ]); 
                        printRecurve(a,len,k + 1); 
                        swap(a[idx],a[k]);
                }
        }
}
int main()
{
        int b[3] = {1,2,3};
        printRecurve(b,2,0);
        return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:47162次
    • 积分:1622
    • 等级:
    • 排名:千里之外
    • 原创:114篇
    • 转载:15篇
    • 译文:0篇
    • 评论:15条