您的位置:首页 > 其它

回溯(排列组合)

2015-12-10 11:36 162 查看
#include "iostream"
#include "vector"
using namespace std;

void print(vector<int>Array)
{
int i;
for(i=0;i<Array.size();i++)
{
cout<<Array[i]<<" ";
}
cout<<endl;
}

void swap(vector<int>&Array,int i,int j)
{
int temp;
temp = Array[i];
Array[i] = Array[j];
Array[j] = temp;
}

void backtrack(int i,vector<int>Array)
{
if(i>=Array.size())
{
print(Array);
}
for(int j=i;j<Array.size();j++)
{
swap(Array,i,j);
backtrack(i+1,Array);
swap(Array,i,j);
}
}

int main()
{
vector<int>Array;
int N,i;
cout<<"please input num N:N=";
cin>>N;
for(i=0;i<N;i++)
{
Array.push_back(i+1);
}
backtrack(0,Array);

return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: