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

如何编写一个程序,输出由A,B,C,D,E五个字符组成的全排列?!

第1个回答  推荐于2016-01-13
显然应该是递归
#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;
}
第2个回答  2007-10-27
迭代最简单了,从5个里面选一个,然后从4个里面选一个,递归一下就可以了
第3个回答  2007-10-27
五重循环好像就可以了.本回答被提问者采纳

C++全排列问题,请问这段代码是大概什么流程思路,我看不太懂。求助!_百...
2.若当前序列为词典里最小最初最低的那个序列,则可以输出一个全排列。(可以借鉴解决其它遍历问题)内部原因:while(next_permutation(a,a+3)),如果存在a之后的排列,就返回true。如果a是最后一个排列,即字典里面没有后继,则返回false。

如何理解c++中的“全排列问题”?
全排列问题在C++中主要涉及两种方法进行解决:直接使用深度优先搜索(DFS)回溯法和调用标准库函数std::next_permutation。对于求全排列,直接采用DFS回溯法是一种常见的处理方式。这种方法通过递归地选择剩余元素中的一个进行排列,不断扩展搜索空间,直到找到所有可能的排列。而std::next_permutation函数则提...

C++中输出全排列的问题
显然应该是递归 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 ...

全排列算法(c++)
在计算机科学中,全排列问题对于无重复元素的集合,例如{a1, a2, a3, ..., an},目标是找出所有可能的排列方式。这种问题可以通过分治策略解决。首先,我们可以简化问题,将字符串分为两个部分:头部只有一个元素,尾部包含剩余所有元素。比如,以字符串"abcd"为例,头部可以是"a",尾部是"bcd"。这...

c++全排列问题
include <stdio.h>#include <stdlib.h>int main(){int a[2][3] = {{1, 2, 3},{4, 5, 6}};for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {for (int k = 0; k < 3; k++) {if (i != j && i != k && j != k) {printf("%d %d...

C++编程(全排列问题)
void print(int a[], int n, int k) { if(k == n) { for(int i = 0 ; i < n ; i++) { cout<<a[i]<<" ";} cout<<endl;return;} for(int i = 0; i < 2 ; i++) { a[k] = i;print(a, n , k+1);} } void print(int n) { int* a = new int[n]...

全排列的算法用c++写出来
include<iostream.h> void main(){ int i,f=1,n;cout<<"请输入n"<<endl;cin>>n;for(i=1;i<=n;i++)f*=i;cout<<n<<"的全排列为:"<<f<<endl;return;}

c++|全排列算法
) (1) 首先固定1,即1放到第一位,对后两个元素进行全排列; (2) 固定2,即更换1与2的位置,数组变成[2,1,3],固定2,对[1,3]进行全排列; (3) 交换1与3的位置,固定3,对[2,1]进行全排列。 本质上是一个 递归 问题。 需要注意的是 ,每一次更换完,全排列完以后...

C++编写程序,输入数n,输出n个字符的全排列,通过函数递归实现。_百度知 ...
include <string>#include <vector>#include <iostream>using namespace std;vector<string> do_permutation(string str){ vector<string> res; if (str.size() > 1){ for (size_t i = 0; i != str.size(); ++i){ string sub_str = str.substr(0, i) + str.substr(i...

c++问题:输出自然数1到n所有不重复的排列,即n的全排列。
i;for(i=1;i<=n;i++){if(b[i]){a[m++]=i;b[i]=false;if(m==n)print();} else tryy(n,m+1);} } int main(){ cin>>n;int i;memset(b,true,sizeof (b));tryy(n,0);system("pause");return 0;} 都是细节问题,以上就是编译通过的,你的代码,请采纳!谢谢!

相似回答