字母表的特殊排列组合
2017-01-12 18:42
288 查看
写一个程序,打印出以下的序列。
(a),(b),(c),(d),(e)........(z)
(a,b),(a,c),(a,d),(a,e)......(a,z),(b,c),(b,d).....(b,z),(c,d).....(y,z)
(a,b,c),(a,b,d)....(a,b,z),(a,c,d)....(x,y,z)。
(a),(b),(c),(d),(e)........(z)
(a,b),(a,c),(a,d),(a,e)......(a,z),(b,c),(b,d).....(b,z),(c,d).....(y,z)
(a,b,c),(a,b,d)....(a,b,z),(a,c,d)....(x,y,z)。
#include <stdio.h> #include <stdlib.h> #define SIZE 8 //生成字母表 void createAphalbit(char* aphal) { int i = 0; for (; i < SIZE; i++) { aphal[i] = i + 'a'; } aphal[i] = '\0'; } void calcPemutation(char* aphal, char* result, int reach, int len) { if (len == reach) { result[reach] = '\0'; int i = 0; int printable = 1; //去除降序或等序序列 for (; i + 1 < len; i++) { if (result[i] >= result[i + 1]) { printable = 0; break; } } if (printable) { int i = 0; printf("("); printf("%c", result[i++]); for (; i < len; i++) { printf(",%c", result[i]); } printf(")"); } } else { int i = 0; for (; i < SIZE; i++) { //结果拾取 result[reach] = aphal[i]; calcPemutation(aphal, result, reach + 1, len); } } } //指定结果集长度下调用 void ctrlPos(char* str, int len) { int i = 0; char result[len + 1]; // for (; i < len; i++) { calcPemutation(str, result, i, len); // } } //长度控制 void ctrlLength(char* str) { int i = 1; for (; i <= SIZE; i++) { ctrlPos(str, i); printf("\n"); } } int main(void) { char aphalbit[SIZE + 1]; createAphalbit(aphalbit); ctrlLength(aphalbit); return EXIT_SUCCESS; }
相关文章推荐
- 字母表的特殊排列组合
- (组合数学3.3.2.2)UVA 10497 - Sweet Child Makes Trouble(特殊的排列问题——错排方案数)
- LotusScript生成随机密码(数字、字母、特殊字符组合)
- 12个字母任选5个进行排列组合,不可重复 javascript 递归实现
- 字母数字穷举排列组合域名,位数递增,网络爬虫,网页抓取
- c++ 递归实现不同字母的全排列组合
- 用select from dual生成字母的排列组合
- POJ-3049 字母排列组合 (元音辅音要求)
- 排列组合问题
- hdu 1799 排列组合求C(n,m)+预处理
- 判断密码至少8位包含大小写字母,数字,特殊符号四选三
- 全排列,组合问题
- [经典面试题]排列组合专题
- java 字符串排列组合
- hpu 练习二 eof不能出现o与o 一起时,确定字母长度,求排列方式
- 字符串的全排列和组合算法
- DEDECMS修改验证码为数字和小写字母组合
- javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
- 输出n对括号的所有有效排列组合
- js实现全排列组合算法