每一次递归结束之后生成一个全排列,且排列最初一定是有序的,结果也是

using namespace std;
int a[20] = { 1,2,3,4,5,6,7,8,9,10,11,12,13 };
bool vis[20]; //记录第i个数是否用过
int b[20];    //生成的一个全排列
void dfs(int s, int t) //从s到t的全排列{
    if (s == t) {                   //递归结束,产生一个全排列
        for (int i = 0; i < t; ++i)        //输出一个排列
            cout << b[i] << " ";
        cout << endl;
        return;
    }
    for (int i = 0; i < t; i++)
        if (!vis[i]) {
            vis[i] = true;
            b[s] = a[i];
            dfs(s + 1, t);
            vis[i] = false;
        }
}
int main() {
    int n = 3;
    dfs(0, n); //前n个数的全排列
    return 0;
}
# ```当t改成3时,指的是n个数的任意3个数全排列