博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求字符串的组合
阅读量:6498 次
发布时间:2019-06-24

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

//原理:利用组合数学知识,(n, m)为从n个数中选择m个,计n中某个为a,分为两种情况:一,若本次选择的包含a,则需要从剩余n-1个选择m-1个数;二,若本次选择不包含a,则需要从剩余的n-1个里面选择m个。从而可以形成递归算法:#include
void combination2(char *str, char *result, char *p, int m){ if(strlen(p)== m){//边界条件一:从剩余的m中选择m个,只有一种方法,全选即可。 printf("%s\n", p); return; } if(m== 1){//边界条件二:从剩余的strlen(p)个中选择1个,有strlen(p)个方法,再与前面保存的result“拼接”即可。 char *q; for(q=p; (*q)!= '\0'; ++q){ printf("%s%c\n", result, *q); } return; }else{ char *temp_result= result; *(++temp_result)= *p; if(*(p+1)!='\0'){ combination2(str, temp_result, p+1, m-1); } if(*(p+1)!= '\0'){ combination2(str, result, p+1, m); } }}void combination(char *str){ int i; for(i=1; i<= strlen(str); ++i){ char result[6]={};//可以根据需要申请大小 combination2(str, result, str, i); }}int main(void){ char *str="abc"; combination(str);}

转载于:https://www.cnblogs.com/littlefishxu/p/3969176.html

你可能感兴趣的文章
自动化运维—saltstack
查看>>
Redis5.0之Stream案例应用解读
查看>>
PrestaShop 网站漏洞修复如何修复
查看>>
数据千万条,备份第一条,数据找不回,老板两行泪
查看>>
Windows下安装Redis服务
查看>>
Java并发面试,幸亏有点道行,不然又被忽悠了
查看>>
[初级]深入理解乐观锁与悲观锁
查看>>
【Android开发】:在任意目录执行NDK编译
查看>>
Ubuntu16.04菜单栏侧边栏不显示
查看>>
PHP 相关配置
查看>>
Python的while循环
查看>>
ie和firefox操作table对象的异同
查看>>
OSChina 周六乱弹 —— 就少个接吻的女友了
查看>>
cnpm install -g generator-gulp-webapp yo gulp-webapp test-gulp-webapp
查看>>
PCM数据格式
查看>>
超强OCR文字识别软件首选ABBYY FineReader
查看>>
7_7_2013 E.Function
查看>>
我的友情链接
查看>>
两个FTP对传文件
查看>>
Centos 7使用vsftpd搭建FTP服务器
查看>>