#include<stdio.h>
#include<string.h>
void Perm(char m[], int k, int n)
{ char t;
int i;
if (k==n-1)
{ //输出一种排列
for (i=1; i<n; i++)
printf("%c", m[i]);
}
else //产生{m[k],…,m[n-1]}各种排列
for (i=k; i<n; i++)
{
t=m[k];m[k]=m[i];m[i]=t; //产生{m[k+1],…m[n-1]}各种排列
Perm(m, k+1, n);
t=m[k]; m[k]=m[i];m[i]=t;
}
printf("\n");
}
main()
{ int k=0;
char m[4]={'a','b','c','d'};
Perm(m, k,4);
}
我编的程序不知道哪里错了。
由于我还是刚刚注册的,没什么财富。所以请好心人士帮帮我吧,我要是有财富,绝不会吝啬的。
4个元素的集合{a,b,c,d}可能产生的排列。(递归算法)
char m[4] = { 'a', 'b', 'c', 'd' };Perm(m, k, 4);return 0;}
输入4个整数a,b,c,d,找出其中最大的数。用函数的递归调用来处理
printf("the max number is %d\\n",max(max(a,b),max(c,d)));} int max(int a,int b){ return a>b?a:b;}
元素组合法举例说明
1. 选择固定数量的元素进行组合:例如,从元素集合{A, B, C, D}中选择2个元素进行组合,可以有以下组合方式: - AB - AC - AD - BC - BD - CD2. 选择固定长度的组合:例如,从元素集合{A, B, C, D}中选择长度为3的组合,可以有以下组合方式: - ABC - ABD - ACD - BCD3. ...
汉诺塔c语言程序代码递归?
\\x0d\\x0a递归算法:\\x0d\\x0a#include\\x0d\\x0a\/\/递归求汉诺塔问题\\x0d\\x0avoidhanoi(intn,charA,charB,charC,int*time)\\x0d\\x0a{\\x0d\\x0aif(n=1)\\x0d\\x0a{\\x0d\\x0ahanoi(n-1,A,C,B,time);\\x0d\\x0amove(A,C);\\x0d\\x0a(*time)++;\\x0d\\x0ahanoi(n-1,B,A,C...
4的 错排数是 9,比如4个元素(ABCD),请枚举
ABCD四个元素错位重排的枚举如下:第一类:当A向后移动一位时,有DABC、BADC、CADB三种情况;第二类:当A向后移动两位时,有CDAB、DCAB、BDAC三种情况;第三类:当A向后移动三位时,有BCDA、CDBA、DCBA三种情况;所以一共是3+3+3=9种情况,每一类下面又是一个三位数的错位重排,三位数时...
c++得出有n个元素的集合的所有子集?
按照你的要求编写的打印有n个元素的集合的所有子集的C++程序如下(见图)
四元组之间的运算程序
FourElements e2 = new FourElements(11, 22, 33, 44d);FourElements e3 = e1.calculate(e2);System.out.println("After calcualting, the result is: " + e3.toString());} } class FourElements{ private double a, b, c, d;public FourElements(double a, double b, double c, ...
写一个递归算法 (数据结构)
数据结构如上图,程序就按照上图写(中序遍历),不难 上图少画了一层,还改不了,但意思很明确
递归算法
输入:盘子的个数n、柱子的名称a,b,c 输出:移动方案 输入:位数n 输出:斐波那契数列第n位的值 有n阶楼梯,每次只能下一个或者两个,计算一共有多少种下楼方法 算法思想:1.将n个数均分为s1和s2 2.分别求解s1和s2的最大值和最小值 s1最大值为max1,s1最小值为min1 s2最大值为max2,s2...
java 递归算法问题:(n,k)=(n-1,k-1)+(n-1,k)?
就是说 n 个里面要选 k 个,分为两组,包含 A和不包含A。包含 A : 已经包含A了,所以总数是 n-1 个了;同理,已经包含了A,所以只要选 k -1 个就可以了,所以为 (n-1,k-1)。不包含A:已经不包含A了,所以总数是 n-1 个;还是选 k个,所以为(n-1,k)。无限递归即可以了。