求N个元素的全排列?

C编程利用递归完成

Ann_LXL
浏览 2223回答 2
2回答

leic

C的语法有点记不清楚了,写了个C++的,楼主看看吧需要注意的是for循环中在swap位置i和startIdx的值后,需要再swap回去(为什么,楼主可以自己试试看)#include <iostream>#include <vector>using namespace std;vector<vector<int> > result;void permutation(vector<vector<int> > & result, vector<int> array, int startIdx, int endIdx) {    if (startIdx == endIdx) {        result.push_back(array);        return;    }    for (int i = startIdx; i <= endIdx; i++) {         int tmp = array[i];         array[i] = array[startIdx];         array[startIdx] = tmp;         permutation(result, array, startIdx+1, endIdx);         tmp = array[i];         array[i] = array[startIdx];         array[startIdx] = tmp;    }}int main() {    vector<int> array(3);    for (int i = 0; i < 3; i++) {         array[i] = i;    }    vector<vector<int> > result;    permutation(result, array, 0, array.size() - 1);    for (int i = 0; i < result.size(); i++) {         for(int j = 0; j < result[i].size(); j++) {             cout<<result[i][j]<<" ";         }         cout<<endl;    }    return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP