某个整数的全排列问题

#include <iostream>
#include <ctime>
#include <vector>
#include <algorithm>
using namespace std;

//int perm() {
//    int data[4] = { 5,2,1,4 };
//    sort(data, data + 4);
//    do {
//        for (int i = 0; i < 4; ++i) {
//            cout << data[i] << " ";
//        }
//        cout << endl;
//    } while (next_permutation(data, data + 4));
//}
int num = 0;
int Data[] = { 1,2,3,4,5,6,7,8,9,10,15,30,87,12 };
int Perm(int begin, int end) {
    int i;
    if (begin == end) {
        num++;
    }
    else {
        for (int i = begin; i <= end; ++i) {
            swap(Data[begin], Data[i]);
            Perm(begin + 1, end);
        }
    }
    return num;
}

//class Solution {
//private:
//    vector<int> p;
//    vector<bool>used;
//    vector<vector<int>>q;
//public:
//    void GetPerm(vector<int>& nums, int Index, vector<int>& p) {
//        if (Index == nums.size()) {
//            q.push_back(p);
//            return;
//        }
//        for (int i = 0; i < nums.size(); ++i) {
//            if (!used[i]) {
//                used[i] = true;
//                p.push_back(nums[i]);
//                GetPerm(nums, Index + 1, p);
//                p.pop_back();
//                used[i] = false;
//            }
//        }
//        return;
//    }
//public:
//    int Perm(vector<int>& nums) {
//        used = vector<bool>(nums.size(), false);
//        p.clear();
//        q.clear();
//        GetPerm(nums, 0, p);        
//        return q.size();
//    }
//};


int main() {
    
    /*vector<int> arr(10,0);
    for (int i = 0; i < 10; ++i) {
        arr[i] = i + 1;
    }
    int num = Solution().Perm(arr);*/
    Perm(0, 10);
    cout << num << endl;
    system("pause");
}
原文地址:https://www.cnblogs.com/z2529827226/p/11631407.html