求【1...N】的全排列

#include
#include
using namespace std;
class Solution
{
public:
vector<vector> permute(vector nums)
{
vector<vector> res;
vector resTemp;
backTrace(res,resTemp,nums);
return res;
}
bool contains(vector vec,int dst)
{
for(vector::const_iterator it=vec.begin();it!=vec.end();it++)
{
if(*it==dst)
return true;
}
return false;
}
void backTrace(vector<vector>& res,vector& resTemp,vector& nums)
{
if(resTemp.size()==nums.size())
res.push_back(resTemp);
else
{
for(int i=0;i<nums.size();i++)
{
if(contains(resTemp,nums[i]))
continue;
resTemp.push_back(nums[i]);
backTrace(res,resTemp,nums);
resTemp.pop_back();
}
}
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Solution so;
int n=0;
cin>>n;
vector nums;
for(int i=1;i<=n;i++)
{
nums.push_back(i);
}
vector<vector> res=so.permute(nums);
for(int i=0;i<res.size();i++)
{
cout<<"[";
for(int j=0;j<res[i].size();j++)
{
cout<<res[i][j]<<" “;
}
cout<<”]"<<endl;
}
return a.exec();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章