- 浏览: 76128 次
- 性别:
- 来自: 北京
-
#include <stdio.h> #include <string.h> void combine(char *src, char *out,int rec, int start, int end) { int i; if(start==end) return; for(i=start;i<end;i++){ out[rec]=src[i]; out[rec+1]='\0'; printf("%s\n",out); combine(src,out,rec+1,i+1,end); } } int main(int argc, char *argv[]) { int len=strlen(argv[1]); char out[len]; combine(argv[1],out,0,0,len); return 0; }
/** *从字符串中取出n个的组合 */ #include <stdio.h> #include <string.h> void combine(char *src,char *out,int start,int rec,int end, int n) { int i; if(n>end) n=end; for(i=start;i<end;i++){ out[rec]=src[i]; if(n==1){ out[rec+1]='\0'; printf("%s\n",out); }else { combine(src,out,i+1,rec+1,end,n-1); } } } int main(int argc, char *argv[]) { char out[strlen(argv[1])]; combine(argv[1],out,0,0,strlen(argv[1]),atoi(argv[2])); return 0; }
#include <stdio.h> #include <string.h> void arrange(char *src,int start,int end) { int i; char tmp; if(start==end){ printf("%s\n",src); } for(i=start;i<end;i++){ tmp=src[start];src[start]=src[i];src[i]=tmp; arrange(src,start+1,end); tmp=src[start];src[start]=src[i];src[i]=tmp; } } int main(int argc, char *argv[]) { arrange(argv[1],0,strlen(argv[1])); return 0; }
发表评论
-
排序算法---计数排序
2011-11-27 14:57 627#include <stdio.h> vo ... -
排序算法---归并排序
2011-11-26 19:33 764#include <stdio.h> vo ... -
排序算法---交换排序(冒泡排序、快速排序)
2011-11-26 19:32 708#include <stdio.h> vo ... -
排序算法---选择排序(简单插入排序、堆排序)
2011-11-26 19:31 661#include <stdio.h> vo ... -
排序算法---插入排序(简单排序、shell排序)
2011-11-26 19:29 661#include <stdio.h> vo ... -
删除字符串中的特定字符和重复字符
2011-11-26 13:45 672#include <stdio.h> vo ... -
Linux编程-多线程、同步和互斥(转载)
2011-11-14 15:27 1224http://www.cnblogs.com/skynet/a ... -
寻找字符串中的最大数字子串
2011-09-22 17:17 1536#include <stdio.h> int f ... -
删除子字符串
2011-09-21 15:27 612#include <stdio.h> #incl ... -
c语言随机数
2011-09-18 17:15 692#include <stdio.h> #i ... -
带头结点有序单链表的合并
2011-09-08 14:21 1195typedef int Item; typedef s ... -
链表逆序的递归/非递归算法
2011-09-01 23:37 1427/** *链表逆序的递归/非递归算法 */ # ... -
递归算法---0-1背包问题(面试宝典)
2011-08-28 21:11 1921/** *正整数n,m,从数列1、2、3、...、n中随 ... -
递归算法---字符串全组合(面试宝典)
2011-08-28 17:24 1274/** *求一字符串所有字串的组合 */ #i ... -
递归算法---求解多元一次方程
2011-08-28 10:38 1906/** * 求解x1+x2+x3+...+x10 = ... -
(zz)关于类的sizeof
2011-08-27 18:16 610http://blog.sina.com.cn/s/blog_ ... -
(zz)结构体字节对齐原则
2011-08-27 17:53 1586结构体默认的字节对齐一般满足三个准则: 结构体变量的首 ... -
list.h from linux-2.4
2011-08-25 09:59 615#ifndef _LIST_H_ #define _L ... -
The C Programming Lang (K&R) hash table
2011-08-25 09:52 945hash.h #include <stdio.h ... -
Josephus环
2011-08-23 11:20 707/*************************** ...
相关推荐
在给定的“递归算法实现随机串和全排列的生成”主题中,我们将深入探讨递归在生成随机字符串和全排列问题中的应用。这里我们将主要关注递归的核心概念、如何生成随机字符串以及如何实现全排列,所有这些都是使用C#...
Java递归实现字符串全排列与全组合是指使用Java语言通过递归算法实现字符串的全排列和全组合。全排列是指将字符串中的所有元素按照一定的顺序进行排列,而全组合是指将字符串中的所有元素按照一定的顺序进行组合。 ...
- 字符串排序和全排列(perm函数):通过递归和回溯算法生成字符串的所有排列组合,并在完成排序的基础上调用。 - 字符串搜索(strstr函数):检测一个字符串是否包含在另一个字符串中,类似于C语言中的库函数。 - ...
通过理解排序算法的基本原理、掌握常用的数据结构以及学习如何设计递归算法,程序员可以有效地解决这类问题。在实际应用中,根据具体需求选择合适的算法和数据结构,能够显著提高程序的效率和性能。
- 通过递归或迭代的方法生成所有可能的排列或组合。 - 在组合数学中有着重要应用。 14. **二维线段树**: - 扩展了一维线段树的功能,用于处理二维空间中的区间查询。 - 在计算机图形学等领域有着广泛应用。 ...
这些数学概念在算法竞赛和复杂问题解决中非常关键,例如,斐波那契数列在动态规划和递归算法中经常被引用,而斯特林近似则用于大型组合问题的近似计算。 ### 大数模板与数论算法 - **大数模板**:处理超过常规整型...
随着字符串长度的增加,递归算法的重复计算问题变得尤为突出,其时间复杂度高达O(n!)。尽管递归算法在逻辑上易于理解,但当处理大规模数据时,递归算法的效率远不如非递归算法。 非递归方法利用了STL(标准模板库)...
12. 字符串匹配(KMP算法):高效的字符串查找算法。 13. 全排列和全组合:生成所有可能的排列和组合。 14. 二维线段树:处理二维区间问题的扩展数据结构。 15. 稳定婚姻匹配:处理稳定匹配问题的算法。 16. 后缀...