博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全排列问题(c语言实现)
阅读量:4566 次
发布时间:2019-06-08

本文共 1492 字,大约阅读时间需要 4 分钟。

问题描述:

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

注意:

(1) m<n

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

(3)"遇零则止"

核心代码如下:

#include 
#include
#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
#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;}

 

转载于:https://www.cnblogs.com/youdiaodaxue16/p/9102884.html

你可能感兴趣的文章
java多线程1-生产者与消费者
查看>>
C# 字符串处理函數大全
查看>>
老师上课总是不给PPT?于是我用几行python代码偷偷复制U盘文件
查看>>
HDU 1022 ( Train Problem I )
查看>>
node.js&pm2搭建node生产环境
查看>>
tornado write render redirect IP
查看>>
WebGL笔记(目录)
查看>>
JavaScript中的单体模式四种实现方式
查看>>
帮程序员减压放松的10个良心网站
查看>>
工作压力山大?码农这么减压最有效
查看>>
python学习手册笔记——13.while和for循环
查看>>
4 pandas模块,Series类
查看>>
sql server 的datediff函数
查看>>
mongoDB创建windows服务启动解决
查看>>
差点被处分
查看>>
mysql局域网连接
查看>>
分布式配置中心(Native - Config)
查看>>
WPF尖角框的绘制
查看>>
操作系统与计算机的演变
查看>>
escape, encodeURI, encodeURIComponent
查看>>