递归回溯求全排列

#include <stdio.h>
#include<iostream>

using namespace std;

void f(int x[], int k)
{
    int i,t;
    if(k>=3){//出口 
        for(int i=0;i<3;i++)cout<<x[i]<<" ";
        cout<<endl;
        return;
    }

    for(i=k; i<3; i++){
        {t=x[k]; x[k]=x[i]; x[i]=t;}
        f(x,k+1);//深搜 
        {t=x[k]; x[k]=x[i]; x[i]=t;};//回溯 
    }
}

int main()
{
    int x[] = {1,2,3};
    f(x,0);
    return 0;
}

 

posted @ 2019-03-13 14:33  Kiss_the_rain  阅读(134)  评论(0编辑  收藏  举报