- 浏览: 75005 次
- 性别:
- 来自: 北京
#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 600#include <stdio.h> vo ... -
排序算法---归并排序
2011-11-26 19:33 739#include <stdio.h> vo ... -
排序算法---交换排序(冒泡排序、快速排序)
2011-11-26 19:32 698#include <stdio.h> vo ... -
排序算法---选择排序(简单插入排序、堆排序)
2011-11-26 19:31 643#include <stdio.h> vo ... -
排序算法---插入排序(简单排序、shell排序)
2011-11-26 19:29 643#include <stdio.h> vo ... -
删除字符串中的特定字符和重复字符
2011-11-26 13:45 660#include <stdio.h> vo ... -
Linux编程-多线程、同步和互斥(转载)
2011-11-14 15:27 1202http://www.cnblogs.com/skynet/a ... -
寻找字符串中的最大数字子串
2011-09-22 17:17 1512#include <stdio.h> int f ... -
删除子字符串
2011-09-21 15:27 598#include <stdio.h> #incl ... -
c语言随机数
2011-09-18 17:15 682#include <stdio.h> #i ... -
带头结点有序单链表的合并
2011-09-08 14:21 1177typedef int Item; typedef s ... -
链表逆序的递归/非递归算法
2011-09-01 23:37 1404/** *链表逆序的递归/非递归算法 */ # ... -
递归算法---0-1背包问题(面试宝典)
2011-08-28 21:11 1891/** *正整数n,m,从数列1、2、3、...、n中随 ... -
递归算法---字符串全组合(面试宝典)
2011-08-28 17:24 1249/** *求一字符串所有字串的组合 */ #i ... -
递归算法---求解多元一次方程
2011-08-28 10:38 1892/** * 求解x1+x2+x3+...+x10 = ... -
(zz)关于类的sizeof
2011-08-27 18:16 562http://blog.sina.com.cn/s/blog_ ... -
(zz)结构体字节对齐原则
2011-08-27 17:53 1574结构体默认的字节对齐一般满足三个准则: 结构体变量的首 ... -
list.h from linux-2.4
2011-08-25 09:59 601#ifndef _LIST_H_ #define _L ... -
The C Programming Lang (K&R) hash table
2011-08-25 09:52 929hash.h #include <stdio.h ... -
Josephus环
2011-08-23 11:20 695/*************************** ...
相关推荐
在给定的“递归算法实现随机串和全排列的生成”主题中,我们将深入探讨递归在生成随机字符串和全排列问题中的应用。这里我们将主要关注递归的核心概念、如何生成随机字符串以及如何实现全排列,所有这些都是使用C#...
总之,生成字符串的全部排列组合涉及到字符串操作、动态内存管理和递归算法等多个方面的知识。合理的设计和高效的算法实现是解决此类问题的关键。在实际开发中,我们应当注重代码的清晰度、效率和可维护性,以满足...
### Java使用递归实现字符串反转 在Java编程语言中,递归是一种常用的...需要注意的是,在实际开发中,对于非常大的字符串进行递归反转可能会导致栈溢出错误,因此在应用递归算法时也需要考虑其适用范围和可能的风险。
### 递归实现字符串逆序 #### 知识点概览 本文将详细介绍如何使用C++中的递归技术来实现字符串的逆序操作。逆序字符串是一个常见的编程问题,在多种场景下都有应用,例如文本处理、算法设计等。通过递归方法解决此...
在PHP编程语言中,处理字符串的排列组合是常见的任务,特别是在数据分析、彩票系统或其他需要生成所有可能结果的场景中。本篇文章将详细讲解如何利用PHP实现字符串的组合算法,特别是针对“组二”和“组三”的组合...
在编程领域,字符串排列组合是一个常见的算法问题,它涉及到如何生成一个字符串的所有可能的排列方式。这个主题主要与计算机科学的算法设计和技术有关,尤其是在数据结构和算法分析的课程中经常遇到。本节将深入探讨...
基础算法-递归-杨鑫20191010.pptx,基础算法-递归-杨鑫20191010.pptx,基础算法-递归-杨鑫20191010.pptx
在.NET编程环境中,递归算法是一种强大的工具,它允许函数或方法调用自身来解决复杂问题。递归的核心思想是将大问题分解为相同或相似的小问题,直到问题变得足够简单,可以直接得出答案。这种解决问题的方式在数据...
递归算法的核心在于两个主要组成部分:基本情况(base case)和递归情况(recursive case)。基本情况是问题最简单的情况,可以直接求解,无需进一步的递归调用。递归情况则是将问题分解成规模更小的子问题,然后...
本教程主要探讨如何使用C语言中的递归算法实现字符串逆序。首先,我们需要理解递归的基本概念,然后深入到C语言中如何操作字符串,最后将递归应用于这个特定问题。 **递归定义** 递归是函数或程序设计的一种技术,...
在VC++(Visual C++)环境中,有多种方法可以实现这一目标,其中最常见的是递归算法和非递归算法。这两种方法各有优缺点,适用于不同的场景。 **递归算法**: 递归算法是一种基于函数自身调用解决问题的方法。在...
BM算法是一种基于坏字符规则和好后缀规则的单模式字符串匹配算法,它的主要优点在于能有效地跳过大部分不匹配的字符。在多模式匹配中,AC算法负责快速定位,而BM算法则用于减少不必要的比较次数。 AC_BM算法的实现...
本文将基于“递归方法求阶乘与字符串反转”这一主题,深入探讨递归的基本概念、工作原理以及如何在C#语言中实现阶乘计算和字符串反转。 ### 一、递归的基本概念 递归(Recursion)是指在函数的定义或算法的描述中...
9. **递归的应用**:在ACM竞赛中,递归算法广泛应用于图论(如深度优先搜索)、树结构处理(如二叉树遍历)和组合数学等领域。 10. **注意事项**:递归可能导致栈溢出,尤其是在没有正确设置终止条件或者问题规模过...
### 递归算法专题知识点详解 #### 一、递归算法原理 递归算法是一种将问题分解成子问题的方法,其中子问题与原问题性质相同但规模较小。递归算法的关键在于识别出能够通过递归解决的问题,并找到递归的基本情况...
递归算法通常基于分治法的思想,通过逐个交换字符来生成新的排列,保证不遗漏任何排列的关键在于递归前保持序列的顺序。而非递归算法则涉及到从字典序最小的排列到字典序最大的排列的生成,通常需要理解排列的“下一...
标题 "输入一个字符串,输出所有该字符串的组合情况" 涉及的主要知识点是字符串处理和算法,特别是组合和排列的生成。在这个问题中,我们需要编写程序来生成一个给定字符串的所有可能的子序列或子字符串,这通常涉及...
在逆序字符串的场景下,我们可以把字符串看作是第一个字符和剩余部分的组合,递归地处理剩余部分,直到剩余部分为空,然后将逆序后的剩余部分与第一个字符连接起来。 下面是一个使用递归实现C语言字符串逆序的基本...