`
taro
  • 浏览: 136659 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

从M个不同字符中任取N个字符的所有组合(N <= M)

阅读更多
#include <stdio.h>
void select(char* str, int len, char* result, int start, int curr, int dest)
{
    if (curr == dest) puts(result);
    else
    {
        int i;
        for (i = start; curr + len - i >= dest; ++i)
        {
            result[curr] = str[i];
            select(str, len, result, i+1, curr+1, dest);
        }
    }
}

int main()
{
    char *source = "ABCDE";
    char result[8] = {0};
    select(source, 5, result, 0, 0, 3);
    return 0;
}


递归调用很巧妙,尤其是curr + len - i >= dest这个不等式的得来~
分享到:
评论

相关推荐

    从n个数组中取出所有排列组合(Java实现)

    排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的所有可能的方式;组合则是指不考虑元素的顺序,仅考虑元素的选取。在这个问题中,我们不仅要考虑元素的选取,还要考虑它们的顺序,因此属于...

    基于位图的n选m的组合算法实现(C#)

    在IT领域,组合算法是一种常见的数据处理方法,用于从给定的集合中找出所有可能的m个元素的子集,当需要对大量数据进行筛选或分析时尤其有用。本项目是基于C#语言实现的n选m组合算法,能够处理各种类型的数据,包括...

    易语言源码排列组合模块(M选N)源码.rar

    在计算机科学中,排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的所有可能的方法数。组合则是指从n个不同元素中不考虑顺序取出m个元素的方法数。排列和组合的计算公式分别是: 1. 排列...

    C语言打印字符图形

    3. **多字符组合图形**:通过混合使用不同字符,可以创建更加复杂的图案,如使用`*`和空格创建网格。 #### 四、实践建议 - **练习不同形状**:尝试使用C语言创建不同的图形,如正方形、菱形、心形等。 - **理解...

    Go语言实现的排列组合问题实例(n个数中取m个)

    组合是指从n个不同元素中取出m(m≤n)个元素并组成一组的方式。在组合中,元素的顺序并不重要,也就是说,如果两个组合中的元素完全相同,则这两个组合被视为相同的组合。 **示例:** 假设我们有一个集合 [1, 2, 3]...

    字符串的组合算法问题的C语言实现攻略

    全组合的概念是指从字符串中取出0到n个字符的所有可能性,包括空集和本身。通过位运算的方法,我们可以轻松地获取所有这些组合,因为每种可能的子集都可以与一个0到2^n - 1之间的整数对应。 总结来说,字符串组合...

    python实现n个数中选出m个数的方法

    标题中的“python实现n个数中选出m个数的方法”是指在Python编程环境中,如何从一个包含n个元素的集合中选择出m个元素的所有可能组合。这个问题在计算机科学和算法设计中通常被称为组合问题,它涉及到组合数学和回溯...

    Permutation with Repetition R={ r1,r2,… ,rn }是要进行排列的n 个元素。其中元素r1,r2,… ,rn可能相同。试设计一个算法,列出R的所有不同排列。

    - 第一行是一个整数`n`(`1 &lt;= n &lt;= 500`),表示元素的数量。 - 第二行包含`n`个字符,这些字符即为待排列的元素。 #### 输出格式 针对每组输入数据,输出所有不同的排列,每个排列占一行。在最后一行输出总的...

    asp取汉字首拼函数

    为了方便处理字符串中的多个汉字,还提供了一个扩展函数`getpy`,它可以处理包含多个汉字的字符串,依次调用`getpychar`函数获取每个汉字的拼音首字母,并最终返回这些拼音首字母的组合字符串。 1. **参数说明**: ...

    字符串的全排列和组合算法.doc

    首先,全排列是指从一个给定序列中生成所有可能的不同顺序的排列。在字符串上下文中,这通常涉及将字符串中的每个字符视为一个元素,并列出所有可能的字符顺序。例如,字符串"abc"的全排列包括"abc", "acb", "bac", ...

    输入两个正整数m和n求其最大公约数和最小公倍数 (2).pdf

    这些题目涵盖了计算机科学基础的多个领域,包括算法设计、数据结构、输入输出处理、字符串操作、数学计算以及简单的逻辑判断。下面将逐一解析这些知识点: 1. **最大公约数(GCD)和最小公倍数(LCM)**:这是基本...

    字符串面试题整理

    1. **字符串循环左移**:给定一个字符串和一个整数k,将字符串中的每个字符向左移动k个位置。例如,字符串"abcdefg",k=2,移动后的结果为"efgabcd"。可以使用双指针技巧,将字符串分为两部分,然后交换它们。 2. *...

    oracle常用字符函数

    - LTRIM从字符串chr的左侧删除指定的n字符,直到遇到不在n中的字符为止。 10. NLS_INITCAP(chr, [‘nls_param’]) 函数: - 这个函数根据指定的nls_param(如拼音、部首等)将字符串的首字母转换为大写。 11. ...

    nodejs+字符串的模式匹配+正则表达式+判断获取字符串的某些需求

    2. **重复字符**:使用 `{n,m}` 来限定匹配的次数,例如 `{1,20}` 表示匹配1到20次。 3. **选择-组合-引用**:可以使用圆括号 `( )` 来组合多个模式,通过 `|` 进行选择匹配。同时,可以通过 `\1`, `\2` 等来引用...

    各大软件公司--面试算法笔试题

    从M个不同字符中任选N个字符的所有组合。 #### 解析: 这是一个典型的组合生成问题,可以通过递归的方式实现。首先确定第一个字符的选择,然后递归地生成剩余位置的组合。 ```c void find(char *source, char *...

    正则表达式(Regular Expression,简称Regex)是一种用于匹配字符串中字符组合的模式 它广泛应用于文本处理、数

    正则表达式(Regular Expression,简称Regex)是一种用于匹配字符串中字符组合的模式。它广泛应用于文本处理、数据验证、搜索与替换等领域。 正则表达式的基本组成: 普通字符:直接匹配的字符,如 a, b, 1, # 等。...

    大整数乘法(分治法)

    在大整数乘法中,可以将每个 n 位大整数分解成两个 n/2 位的子整数,分别计算它们的乘积,然后组合结果以得到最终的乘积。 在这个实验报告中,我们使用了分治法来设计大整数乘法算法。首先,将每个 n 位大整数 X 和...

    c语言经典程序

    从给定的代码片段来看,这些程序主要展示了C语言中如何使用嵌套循环来创建不同形状的字符图案。下面将详细解析每个程序的关键知识点。 ### 第一个程序 ```c #include"stdio.h" #define n 37 void main() { int i,...

    java获取N项的排列结果和组合结果

    使用java找出N项中的M项的排列结果、组合结果。从列表List或者Array中找出n项得到的排列、组合结果——排列A(n,m),组合C(n,m)

Global site tag (gtag.js) - Google Analytics