全排列 c++
来源:互联网 发布:c11多线程编程 编辑:程序博客网 时间:2024/05/16 10:09
/************************************************************ ** @file c.cpp ** @author ** @date Thu Sep 8 22:22:07 2011 ** @brief c++全排列 ** ** **@version Copyright (c) 2011,河南理工大学-信管08-三班. **************************************************************/#include<iostream>#include<cstring>using namespace std;int a[8];bool ok(int k){ for(int i=1;i<k;++i) if(a[i]==a[k])return false; return true;}void print(int n){ for(int i=1;i<=n;++i) cout<<a[i]<<" "; cout<<endl;}void solve(int n){ int k=1; a[1]=0; while(k>0){ a[k]++; while(a[k]<=n && !ok(k))a[k]++; if(a[k]<=n){ if(k==n)print(n); else {k++;a[k]=0;} } else {a[k]=0;k--;} }}int main(int argc, char **argv){ solve(6); return 0;}