问题描述:

假设有数组里面存放26个字母,取出n个,以m个排列,计算排列的总数!

注意:

(1) m<n

(2) 里面的元素不能重复排列

(3)"遇零则止"

核心代码如下:

#include <stdio.h>
#include <malloc.h> #include "../include/permutation.h"
#include "../include/mec.h" static void permutate(char *result, boolean *beUsed, int i,
int n, int m, char *alpha); static void permutate(char *result, boolean *beUsed, int i,
int n, int m, char *alpha) {
int index; if (i >= m) { //递归的结束条件
result[i] = 0;
printf("%s\n", result); return;
}
for (index = 0; index < n; index++) {
if (beUsed[index] == FALSE) {
beUsed[index] = TRUE; //使使用的那个位子赋值为TRUE表示用过了
result[i] = alpha[index];   //放该元素
permutate(result, beUsed, i+1, n, m, alpha);
beUsed[index] = FALSE;
}
}
} void permutatation(char *alpha, int n, int m) {
char *result;
boolean *beUsed; result = (char *) calloc(sizeof(char), m + 1);
beUsed = (boolean *) calloc(sizeof(boolean), n);   // alpha ABCDEFG n个字符   // beUsed 0000000(若是用过了赋值为1)   //下标 1234567 permutate(result, beUsed, 0, n, m, alpha); free(beUsed);
free(result);
}
执行代码如下: #include <stdio.h>
#include "./include/permutation.h" int main() {
char alpha[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int n;
int m; printf("请你输入n和m:");
scanf("%d%d", &n, &m); permutatation(alpha, n, m); return 0;
}

全排列问题(c语言实现)的更多相关文章

  1. 递归实现全排列序列C语言实现

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 以下鄙人用递归回溯的办法,采用C语言实现了全排列序列,用以某些优化方案的原始方案的给定 #incl ...

  2. 深度搜索优先(全排列)//本内容来自《啊哈!算法》或者英文名《Aha!Algorithms》)

      package Mypackage; import java.util.Scanner; public class 全排列{ static int a[]=new int[10]; static ...

  3. c语言的全排列

    在c语言中实现全排列,对于刚接触c语言,还没学习算法的人来说,比较困难了吧.估计大佬也不会看这种基础的东西,全排列实现的办法很多,在c++中有一个专门的函数可以使用,但是在c中实现就有点困难了.如果你 ...

  4. C语言实现全排列

    实现全排列,递归实现 #include <stdio.h> #include <stdlib.h> ; void swap(int *a, int *b) { int m; m ...

  5. C语言实现全排列和回溯法总结

    一.递归实现全排列 #include"cstdio" ]; void print_permutation(int n,int *A,int cur){ if(cur==n){ ;i ...

  6. C语言程序设计100例之(31):全排列问题

    例31   全排列问题 题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入格式 n(1≤n≤9) 输出格式 由1-n组成的所有不重复的数字 ...

  7. 递归实现1-n的全排列(JAVA语言)

    思路: For example: 123的全排列= 1在最前面 23的全排列 + 2在最前面 13的全排列 + 3最前面 12的全排列 所以只需交换和最前面元素的位置,生成剩余元素的全排列即可. im ...

  8. 枚举全排列(包括数列中有重复数)的C语言实现

    据说是用了DFS的思想--然鹅并不知道这是DFS. 主要就是选取一个数放到数组相应位置上,然后递归的排列剩下的数组,将剩下的数组递归排列完了之后再把数放回去,然后这一层递归就返回了-- 有重复数的话遇 ...

  9. C语言全排列

    #include <stdio.h> int m=5; char s[]="12345"; void Swap(char *a, char *b)//元素交换 { ch ...

随机推荐

  1. vertica导出导入数据

    直接开. 导出dat vsql -U dbadmin -wlizhenghua -At -F'|' -c "select * from APP_INTER_BOSS_CDR_COUNT_T& ...

  2. 【python041--构造方法:构造和析造】

    一.魔法方法 1.魔法方法总是被双下划线包围,例如:__init__ 2.为什么在类实例化的时候,有时候需要构造__init__,有时候不需要呢 举例说明: #定义一个矩形的类,需要长和宽两个参数,计 ...

  3. Mac10.13 telnet不能用的解决方法

    telnet在Mac 10.13上不能用了 Restore的方法 brew install inetutils To be clear, brew install inetutils will ins ...

  4. 2018年11月20日 远交近攻 list1

    list 列表用法 li=[1,2,3,"abc"] #列表中的元素,可以为数字或者字符串或者布尔值或者就是列表等,所有都能放进去 #列表中也能嵌套列表 pi=[1,2,3,[2, ...

  5. fastjson常用方法

    fastjson是一款alibaba公司开发的json工具包.json经常被使用在数据传输方面,因此特意对它的一些常用方法做备注,欢迎看客在评论区补充或指出问题. 首先定义一个实体类,用于我们进行对象 ...

  6. topcoder srm 687 div1

    1.$A_{1}=2,A_{2}=3,A_{n}=A_{n-2}+A_{n-1}-1$.给出数字$n$,将其表示成若干个$A$中的不同元素的和. 思路:设$B_{n}=A_{n}-1$,那么有$B_{ ...

  7. Bootstrap3基础 input-group-btn 按钮与输入框 横向组合

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  8. tp框架中的一些疑点知识-8

    NaN是Number对象的一个属性, 表示一个特殊值, 表示不是一个 数字, 引用/赋值时, 要使用: Number.NaN 判断 一个值是不是 NaN, 用 isNaN() 函数, 它是一个js的全 ...

  9. php知识点-1

    global 是在函数内部 声明一个 函数外部的变量(即所谓的全局变量, 而所谓的超全局变量是指 像 $_POST, $GLOBALS等之类的自动系统变量) 的一个别名. 在函数内部使用 unset( ...

  10. 完全卸载oraclean安装

    完全卸载oracle11g步骤:1. 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务.2. 开始->程序->Oracle - OraHome ...