C语言全排列问题

输出ABCDEFG七个字母的全排列。。如何实现?

第1个回答  推荐于2016-11-11
#include <stdio.h>
#include <stdlib.h>
#define N 7
void perm(char*, int);
int main(void) {
char num[N+1], i;
for(i = 1; i <= N; i++)
num[i] = char(i-1+'A');
perm(num, 1);
system("pause");
return 0;
}
void perm(char* num, int i) {
int j, k ;
char tmp;
if(i < N) {
for(j = i; j <= N; j++) {
tmp = num[j];
for(k = j; k > i; k--)
num[k] = num[k-1];
num[i] = tmp;
perm(num, i+1);
for(k = i; k < j; k++)
num[k] = num[k+1];
num[j] = tmp;
}
}
else {
for(j = 1; j <= N; j++)
printf("%c ", num[j]);
printf("\n");
}
}本回答被提问者采纳

c语言排列组合问题,怎么算?
只要C的上面是0,不管下面是什么都等于1。分子是从5开始递减的两个数字相乘,即5*4;分母为从1开始递增的两个数字,即1*2;所以结果为5*4÷(1*2)=10;同理:c53=5*4*3÷(1*2*3)=10 c54=5*4*3*2÷(1*2*3*4)=5 从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个...

C语言N名同学,排成一排,有多少中排列方法?
1.n个同学排成一排的数学解 2.将上面数学解或者数学过程转化为程序代码 于是:对于第1部分:这个是一个全排列问题,解为n的阶乘,表示为:n!=1*2*3...*n 如果没学过,稍微解释一下为什么:n个人排一排,那么显然肯定是n个位置,我们顺序来看,第一个位置:可以随便放n个人中任何一个,所以n...

c语言全排列
1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排列。由于一个数的全排列就是其本身,从而得到以上结果。2、再看后三个数3, 4, 5。它们的全排列为3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3 六组数。即以3开头的和4...

用C语言编程求1、2、3到n的全排列
include <stdio.h> int main(){ int n, nn;printf("input a number: ");scanf("%d", &n);for (int i = 1; i <= n; ++i){ nn = 1;for (int j = 1; j <= i; ++j){ nn = nn * j;} printf("%d! = %d\\n", --j, nn);} return 0;} ...

...9的9个数放入这个数组,也求出所有可能。c语言实现。说一下思路...
这是全排列的问题。全排列算法:如果我求得固定第一位后的排列,那么全部排列就可以求出,固定第一位有10种可能,可以循环求得。如果我求得固定第二位后的排列,固定第一位后的排列就可以求出,固定第二位有9种可能,可以循环求得。。。如果我求得固定第10位后的排列,固定第9位后的排列就可以求...

一个C语言全排列的算法。 比如,输入3,则将123的全排列全部输出:123...
=a7&&a9!=a6&&a9!=a5&&a9!=a4&&a9!=a3&&a9!=a2&&a9!=a1){if(n==9) {printf("%d%d%d\\n",a1,a2,a3,a4,a5,a6,a7,a8,a9);t=t+1;} } } } } } } } } printf("共有%d种\\n",t);getchar();getchar();} 自己辛辛苦苦写的,用dev c运行成功 ...

c语言全排列问题 将a,b,c,d,e,f,g,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 && y!=z)\/*排除...

找出123456这六个数的全排列,但是貌似数太大!c语言
if(n1!=n2&&n2!=n3&&n3!=n4&&n4!=n5&&n5!=n6&&n6!=n1)\/\/六个数都不相同return 1;这个判断是错误的,举例:121212这个数,在你的逻辑里面会return 1;这显然不符合题意。造成的结果就是,你table[cur++]的次数超过了1000次,数组溢出了。

C语言的递归全排列问题
putchar(list[i]);putchar('\\n');这就是输出啊 putchar(ch) ; \/\/输出一个字符到标准输出 相当于printf("%c" , ch );

c语言 给出一个数怎样输出该数的全排列
C语言版:include<stdio.h>#include<stdlib.h>#include<string.h>int a[10], book[10], n, k[10], l;void dfs(int step){int i = 0;if(step == l + 1){if(a[1] != 0){for(i = 1; i <= l; i++){printf("%d", a[i]);}printf("\\n");}return ;}for(i = 0...

相似回答