C语言实现排列/组合算法
来源:互联网 发布:计量器具管理软件源码 编辑:程序博客网 时间:2024/05/18 01:03
/*
* 文件名:Permutation.c
* 用途:全排列算法
* 编程环境:WinXP SP2+CL 8.0
* 完成日期: 2006.2 Ver 0.01
* 作者: 88250
* 联系方式: E-mail: DL88250@gmail.com QQ:845765
*/
#include <stdio.h>
#include <stdlib.h>
int count = 0;
void permutation(char per[], int m, int len)
{
int i;
char tmp;
if (m < len - 1){
permutation(per, m + 1, len);
for (i = m + 1; i < len; i++){
/* 选当次的排列“头” */
tmp = per[m];
per[m] = per[i];
per[i] = tmp;
permutation(per, m + 1, len);
/* 恢复上一次的排列 */
tmp = per[m];
per[m] = per[i];
per[i] = tmp;
}
}else{
++count; /* 对排列进行计数 */
/* 调整一下格式^^ */
printf("%s ", per);
}
return;
}
int main(void)
{
int i = time(NULL);
char per[] = "ABCD";
permutation(per, 0, strlen(per));
printf("The total: %d" , count);
return 0;
}
* 文件名:Permutation.c
* 用途:全排列算法
* 编程环境:WinXP SP2+CL 8.0
* 完成日期: 2006.2 Ver 0.01
* 作者: 88250
* 联系方式: E-mail: DL88250@gmail.com QQ:845765
*/
#include <stdio.h>
#include <stdlib.h>
int count = 0;
void permutation(char per[], int m, int len)
{
int i;
char tmp;
if (m < len - 1){
permutation(per, m + 1, len);
for (i = m + 1; i < len; i++){
/* 选当次的排列“头” */
tmp = per[m];
per[m] = per[i];
per[i] = tmp;
permutation(per, m + 1, len);
/* 恢复上一次的排列 */
tmp = per[m];
per[m] = per[i];
per[i] = tmp;
}
}else{
++count; /* 对排列进行计数 */
/* 调整一下格式^^ */
printf("%s ", per);
}
return;
}
int main(void)
{
int i = time(NULL);
char per[] = "ABCD";
permutation(per, 0, strlen(per));
printf("The total: %d" , count);
return 0;
}
/*
* 文件名:Combination.c
* 用途:组合算法
* 编程环境:WinXP SP2+CL 8.0
* 完成日期: 2006.2 Ver 0.01
* 作者: 88250
* 联系方式: E-mail: DL88250@gmail.com QQ:845765
*/
#include <stdio.h>
#define MAX_NUM 20
int comb[MAX_NUM];
void combination(int m, int n)
{
int i, j;
for (i = m; i >= n; i--){
comb[n] = i; /* 选择当前的“头”元素 */
if (n > 1){
/* 进入下一次更小的组合问题 */
combination(i - 1, n - 1);
}else{
/* 满了需要的组合数,输出 */
for (j = comb[0]; j > 0; j--){
printf("%c", comb[j] + 64);
}
printf(" ");
}
}
return;
}
int main(int argc, char *argv[])
{
comb[0] = 2;
combination(4, comb[0]); /* C(4, 2) */
return 0;
}
* 文件名:Combination.c
* 用途:组合算法
* 编程环境:WinXP SP2+CL 8.0
* 完成日期: 2006.2 Ver 0.01
* 作者: 88250
* 联系方式: E-mail: DL88250@gmail.com QQ:845765
*/
#include <stdio.h>
#define MAX_NUM 20
int comb[MAX_NUM];
void combination(int m, int n)
{
int i, j;
for (i = m; i >= n; i--){
comb[n] = i; /* 选择当前的“头”元素 */
if (n > 1){
/* 进入下一次更小的组合问题 */
combination(i - 1, n - 1);
}else{
/* 满了需要的组合数,输出 */
for (j = comb[0]; j > 0; j--){
printf("%c", comb[j] + 64);
}
printf(" ");
}
}
return;
}
int main(int argc, char *argv[])
{
comb[0] = 2;
combination(4, comb[0]); /* C(4, 2) */
return 0;
}
- C语言实现排列/组合算法
- 排列和组合算法 C语言经典实现
- 排列和组合算法 C语言经典实现
- c 语言实现全排列和组合
- 字符串排列、组合(C语言实现)
- C语言实现全排列(部分算法参考网友,可实现重复字符的组合)
- 排列和组合的非递归算法的C语言实现
- 排列和组合的非递归算法的C语言实现
- 全排列和组合算法的C#语言实现
- 排列算法的C语言实现
- C语言实现全排列算法
- C语言实现的全排列算法
- C语言全排列算法实现
- C语言实现的全排列算法
- C语言实现数学上的组合和排列
- 组合算法实现C语言,非递归
- 组合算法的实现,递归,C语言
- 排列算法及组合算法(C++)
- Linux 初学者笔记
- SQL语言 - 聚合函数练习
- DataGrid绑定列如何截取字符串(不改数据源)?
- javascript文件操作
- php函数说明
- C语言实现排列/组合算法
- 对日嵌入式软件开发团队管理之我见(不断更新中)
- 常用的Struts 2.0的标志(Tag)介绍
- C++的iostream标准库介绍
- Net平台下CLR程序载入原理分析
- MFC的CString(VC6) 内存管理分析
- 当代经典语录
- 百度,google搜索web接口
- 中国移动的系统维护笔试一般会考些什么?