a,b,c,d全排列C语言,C++,排列组合

打印abcd24种排列方法,每行代码后面要有注解,我初一,老实讲搜索,回朔,我有点听不懂,所以来请教

第1个回答  2014-07-13
//既然那些你看不懂,就只能用这种方法了
#include <stdio.h>
using namespace std;

int main(){
char a[4] = {'a','b','c','d'};//定义字符数组
int i , j , k , l , cnt = 0;//定义循环变量及当前为第cnt个组合
for(i = 0 ; i < 4 ; i++){//a的所有可能位置
for(j = 0 ; j < 4 ; j++){//b的所有可能位置
if(j != i){//如果b的当前位置a没有占去,则b可以在当期位置
for(k = 0 ; k < 4 ; k++){//c的所有可能位置
if(k != i && k != j){//如果c的当前位置a、b没有占去,则c可以在当期位置
for(l = 0 ; l < 4 ; l++){//d的所有可能位置
//如果d的当前位置a、b、c没有占去,则d可以在当期位置
if(l != k && l != j && l != i){
cnt++ ;//统计当前为第几个
//输出当前的序列
printf("第 %2d 个为: %c %c %c %c \n" ,cnt, a[i],a[j],a[k],a[l]);
}
}
}
}
}
}
}
return 0 ;
}追问

printf("第 %2d 个为: %c %c %c %c \n" ,cnt, a[i],a[j],a[k],a[l]);

解释一下看不懂

追答

printf就是输出
%2d就是以两位格式输出整型的数
%c就是输出一个字符

追问

系统找不到指定文件

追答

我这边可以啊,你试着重启的程序看看

本回答被提问者采纳
第2个回答  2014-07-13
#include <iostream>
#include <algorithm>  //为了使用全排函数
using namespace std;

int main()
{
char a[] = {'a','b','c','d'};
do{  //输出
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<endl;}
while (next_permutation(a,a+4));  //全排列
return 0;
}

第3个回答  2014-07-13
排列是用A表示,A44=4x3x2x1=24

a,b,c,d全排列C语言,C++,排列组合
int main(){ char a[4] = {'a','b','c','d'};\/\/定义字符数组 int i , j , k , l , cnt = 0;\/\/定义循环变量及当前为第cnt个组合 for(i = 0 ; i < 4 ; i++){\/\/a的所有可能位置 for(j = 0 ; j < 4 ; j++){\/\/b的所有可能位置 if(j != i){\/\/如果b的...

全排列算法(c++)
这四个可能的头部位置表明,对于字符串的首字符"s[0]",它只能是"a"、"b"、"c"或"d"中的一种,这是全排列的一种情况。如果我们要得到整个字符串的所有排列,可以继续这个思路,递归地处理头部和尾部,直到每个位置都确定。对于"abcd"的例子,通过这个分治过程,我们可以得到24种排列(4乘以3乘以...

c语言全排列问题 将a,b,c,d,e,f,g,h全排列,并将全排列存放在一个二维...
include <stdlib.h> void main(){ char x,y,z;\/*保存要全排列的字母*\/ char a[6][3];\/*6是3! *\/ int i=0;\/*要全排列多少字母就进行多少次循环[效率有些低]*\/ for(x='a';x<='c';x++)for(y='a';y<='c';y++)for(z='a';z<='c';z++){ if(x!=y && x!=z ...

求一排列组合算法(c++ c# )
next_permutation()是c++ stl中提供的全排列算法 你可以在每次输出之前作判断阿 include<iostream> include<algorithm> using namespace std;define n 4 char a[n]={'a','b','c','d'};int main(){ int i;while(1){ for(i=0;i<n;i++)printf("%c ",a[i]);printf("\\n");if(!

C++全排列代码求解释,小弟不才,看不懂。。。多谢大神了
递归函数。先确定第一个数,再确定之后的数。一直进行递归调用,直到最后一个数。数组a[]里存的是输出的顺序。由于采用的是递归调用总是从最后面开始换顺序。换过一次顺序之后,其他字符的顺序不变。以abcd为例 abcd abdc acbd 。。。以上信息仅供参考。说的也不定对哈。

求教24点游戏的算法(最好用C++)
用循环的嵌套生成a,b,c,d的24种全排列,记录在数组中.把每一组数当作一个四位的14进制数,把这24个数全部转化为十进制(如(6529)14=6*143+5*142+2*14+9).这样,如果两个排列完全相同,则得到的十进制数是相等的.这样,通过对这些十进制的比较,就可以比较这些排列的相同情况.一旦遇到相同的排列,就标记上....

(C++)关于全排列--循环移位法,怎么怎么用C++语言实现!
全排列递归法 \/\/字符交换 void Swap(char* a, char* b){ char temp = *a;a = *b;b = temp;} \/\/全排列 void QPL(char* Arr, char* begin){ if (*begin == '\\0')cout << Arr<<" ";else { for (char* p = begin; *p != '\\0'; p++){ Swap(p, begin);QPL(Arr...

c语言全排列有什么思路?
实现C语言全排列的思路通常采用深度优先搜索(DFS)方法。以递归形式构建,从第一个元素开始,依次尝试与其他元素交换位置,然后递归处理剩余元素。当处理到最后一个元素时,表示完成一次全排列。此过程通过不断回溯,直到所有可能排列组合都生成。以下是基于深度优先搜索的C语言全排列示例代码:c void swap(...

C++中输出全排列的问题
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...

求C++全排列算法。写的好追加分!
T temp=a;a=b;b=temp;} template<class T>void Prem(T list[],int k,int m)\/\/k是从该数组的第k个开始排,从第一个开始,到第m个结束,全排列的话k=0,m=size;{ int i;if (k==m)\/\/当排到最后一个时,一次排列结束,输出这次的排列组合 { count++;for (i=0;i<=m;i++){...

相似回答