C++中输出全排列的问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 03:09:10
如何编写一个程序,输出由A,B,C,D,E五个字符组成的全排列?!

显然应该是递归
#include <iostream>

using namespace std;

const int Size = 5;

bool visit[ Size ];
int stack[ Size ];

void init( )
{
int i;
for ( i = 0; i < Size; i++ )
visit[ i ] = false;
}

void work( int step )
{
if ( step == Size )
{
int i;
for ( i = 0; i < Size; i++ )
cout<< char( 'A' + stack[ i ] );
cout << endl;
}
if ( step < Size )
{
int i;
for ( i = 0; i < Size; i++ )
if ( !visit[ i ] )
{
visit[ i ] = true;
stack[ step ] = i;
work( step + 1 );
visit[ i ] = false;
}
}
}

int main( )
{
init( );
work( 0 );
return 0;
}

五重循环好像就可以了.

迭代最简单了,从5个里面选一个,然后从4个里面选一个,递归一下就可以了