某个整数的全排列问题
#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"); }