`
steven-zhou
  • 浏览: 213354 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

打印字符串中所有字符的全排列

阅读更多
给定一字符串为:"ABC"
要能打印出:
ABC
ACB
BAC
BCA
CAB
CBA


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

static void arrange(char *s, int start, int end);

int main(int argc, char **argv)
{
    if (argc != 2) {
        printf("usage: ./allrange <string>\n");
        exit(EXIT_FAILURE);
    }

    arrange(argv[1], 0, strlen(argv[1]));

    exit(EXIT_SUCCESS);
}

static void arrange(char *s, int start, int end)
{
    int     i;
    char    tmp;

    if (start == end) {
        printf("%s\n", s);
    } else {
        for (i = start; i < end; i++) {
            tmp = s[start]; s[start] = s[i]; s[i] = tmp;
            arrange(s, start + 1, end);
            tmp = s[start]; s[start] = s[i]; s[i] = tmp;
        }
    }
}

分享到:
评论

相关推荐

    带油重复字符串全排列递归解法

    常见得全排列有三种解决方案,for循环穷举,stl摸板函数next_permutation,还有DFS深度优先搜索,当我们遇到带有重复的字符串时应该考虑除去重复的部分。

    使用C语言解决字符串全排列问题

    输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba 思路 这是典型的递归求解问题,递归算法有四个特性: 必须有可...

    C++字符串的全部排列

    字符串的排列是指从给定的字符集合中选取字符,并按照不同的顺序排列它们,生成所有可能的不同序列。在这个问题中,我们需要对给定的字符串中的每个字符进行全排列。 首先,我们来理解字符串的基本概念。在C++中,...

    C语言实现输入一个字符串后打印出该字符串中字符的所有排列

    这段代码展示了如何在C语言中利用递归实现字符串字符的全排列。虽然这里只列举了三个字符的例子,但这个算法可以扩展到任意长度的字符串。通过递归调用,算法能够确保所有可能的字符排列都被打印出来。这种方法在...

    PHP实现字符串的全排列详解

    在全排列问题中,我们希望找到一个字符串中所有字符的全排列,并按字典序排列。对于输入的字符串abc,其所有可能的排列为abc, acb, bac, bca, cab, cba。 要实现这个功能,可以采用以下步骤: 1. 从字符串的第0个...

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

    字符串的全排列和组合算法是计算机科学中的一种基础算法,主要应用于数据处理和问题求解。在本文档中,我们将探讨如何使用C++实现字符串的全排列算法,并讨论如何处理包含重复字符的情况。 首先,全排列是指从一个...

    生成字符串的全排列,可以用回溯法实现

    否则,我们遍历字符串中的每个字符,将其从字符串中移除,然后递归地对剩余的字符串进行全排列,并将当前字符添加到前缀中。完成递归后,我们再将该字符放回原位,以便下一次迭代。 这个过程可以形象地理解为在排列...

    (ABCDE)字符串排序

    这种排列通常涉及到计算机科学中的全排列算法,尤其是在处理字符串或数组时。 标签 "permutation" 指出该主题的核心是全排列。全排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的所有可能的...

    输出n个字符的全排列(没有重复字符)

    简单的实现,代码很短。...输入一个字符串,输出它的字符的所有组合的情况 如输入“abc”,则输出abc,acb,bac,bca,cab,cba。 但如果输入“aba”,即有重复的,也会输出aba,aab,baa,baa,aba,aab。

    算法实践:全排列(递归)

    给定一个字符串,全排列的任务是找出所有可能的字符顺序,其中每个字符都恰好出现一次。在本例中,字符串仅包含小写字母,并且长度在2到8之间。 解决全排列问题通常采用递归方法。递归的基本思想是将复杂的问题分解...

    C语言重复数全排列的代码

    生成这些字符的不重复的全排列,并将结果打印到标准输出上。 【输入形式】 从标准输入上读入一个由字母、数字组成的字符串,字符串的长度小于100,其中包含重复的字符。 【输出形式】 向标准输出印...

    剑指Offer – 面试题38. 字符串的排列(全排列,排序,回溯+剪枝)

    输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s = "abc" 输出:["abc","acb","bac","bca","cab","cba"] 限制: 1 &lt;= s 的长度 &...

    关于全排列算法

    1. `chang(char str[], int m)`函数:这个函数接收一个字符串`str`和一个整数`m`作为参数,作用是将字符串中的字符向左移动一位,以便在递归过程中改变字符顺序。例如,字符串"ABCD"经过一次左移变为"BCDA"。 2. `...

    python求一个字符串的所有排列的实现方法

    在求字符串所有排列的问题中,我们可以通过递归地固定第一个字符,然后对剩下的字符进行全排列,最后将固定字符放回原位。 以下是一个简单的递归实现: ```python def swap(str, i, j): tmp = str[i] str[i] = ...

    C语言实现的全排列算法

    在实际应用中,全排列算法可以用于解决各种问题,比如生成所有可能的密码组合、解决棋盘游戏中的状态搜索、字符串操作等。通过理解并掌握全排列算法,开发者可以更好地应对需要穷举所有可能性的编程挑战。

    重复元素全排列

    这种算法常用于密码学、数据加密以及计算机科学中的各种组合优化问题,例如在处理含有重复字母的字符串时,找出所有可能的重组方式。 #### 知识点二:算法实现原理 在Java中实现重复元素全排列,通常采用递归的...

    C#求数组中元素全排列的方法

    全排列是指从n个不同元素中取出m个元素,按照一定的顺序排成一列的所有可能组合,其中m≤n。在这个问题中,我们讨论的是如何在C#中实现数组元素的全排列算法。 首先,我们要理解全排列的基本思想。一种常见的方法是...

    全排列算法

    - 字符串操作:找出字符串的所有字符重排组合。 - 棋盘游戏:计算棋子的所有可能布局。 - 测试用例生成:在自动化测试中生成所有可能的输入组合。 7. **注意事项**: - 当处理大数组时,全排列的计算量会非常大...

    java代码-列出所有字符串中大小写的组合

    在Java编程中,有时我们需要处理字符串的大小写组合问题,特别是在进行全排列或者组合搜索时。这个场景描述的代码示例就是解决此类问题的一个实例。本文将深入探讨如何使用Java来列出一个字符串的所有大小写组合。 ...

Global site tag (gtag.js) - Google Analytics