早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c++枚举BCDEFGH七个字母所有排列组合可能一共有7×6×5×4×3×2×1=5040种,求枚举出所有可能。

题目详情
c++枚举BCDEFGH七个字母所有排列组合可能
一共有7×6×5×4×3×2×1=5040种,求枚举出所有可能。
▼优质解答
答案和解析
#include
// 枚举的字母
const char Letter[] = "BCDEFGH";
// 枚举的字母个数
const int LetterNumber = 7;
// 记录哪些字母已经被选取
bool Visit[ LetterNumber ];
// 枚举选出第n个字母, str存放已经选出的字母构成的字符串
void enumLetter( int n, char str[ LetterNumber + 1 ] )
{
// 所有字母都选出则输出
if( n == LetterNumber )
{
puts( str );
return;
}

// 依次尝试选择还没有选择过的字母
for( int i = 0 ; i < LetterNumber ; ++i )
{
if( Visit[ i ] == false )
{
Visit[ i ] = true;
str[ n ] = Letter[ i ];
enumLetter( n + 1, str );
Visit[ i ] = false;
}
}
}
int main()
{
char str[ LetterNumber + 1 ];
str[ LetterNumber ] = 0;
enumLetter( 0, str );
return 0;
}