全排列 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;}


原创粉丝点击