`

用递归输出12234的不同组合

阅读更多
面试的时候一道编程题,12234所有的不同排列方式,回来才考虑用递归这么做

package com.su.reflect;

import java.util.Set;

/**
*
* @author su
*/
public class NewClass {
    public static void main(String args[]) {
       String str = "12234";
       char[] strArray = str.toCharArray();
       Set set = new HashSet();
       permute(strArray, 0, strArray.length - 1,set);

       
    }
    void permute(char[] list, int low, int high, Set set) {
        int i;
        if (low == high) {

            String cout = "";
            for (i = 0; i <= high; i++) {
                cout += list[i];
            }
            if (set.add(cout)) {
                System.out.println(cout);
            }

        } else {
            for (i = low; i <= high; i++) {
                char temp = list[low];
                list[low] = list[i];
                list[i] = temp;
                permute(list, low + 1, high, set);
                temp = list[low];
                list[low] = list[i];
                list[i] = temp;
            }
        }
    }
}
分享到:
评论

相关推荐

    基于hadoop用并行递归实现排列组合运算

    ### 基于Hadoop用并行递归实现排列组合运算 #### 背景介绍与问题描述 在计算机科学领域,数字排列组合是经典的算法问题之一,它不仅通俗易懂,而且对于初学者来说非常友好。通过这个问题的学习,我们可以很好地...

    案例排列组合(递归)

    总的来说,理解和掌握排列组合及递归的使用是编程能力的重要组成部分,它们在解决问题时能提供强大的工具。通过`TestCase_test`中的测试用例,你可以进一步巩固这方面的知识,并提高自己的编程技巧。

    排列组合一个练习以及递归输出排列的PPT

    在这里,我们讨论的是排列组合的一个实践练习,使用递归算法输出排列的所有序列。递归算法是一种经典的算法设计方法,它通过将问题分解成更小的子问题,逐步解决问题的方式来解决问题。 在排列组合中,递归算法可以...

    易语言源码递归法取排列组合易语言源码例程.7z

    6. **输出结果**:在递归函数的非递归路径上,收集并输出排列或组合的结果。这通常涉及到数组或列表的处理,以及适当的输出语句。 这个“递归法取排列组合易语言源码例程”应该包含了上述步骤的具体实现。通过阅读...

    用递归法计算从n个正整数中选择k个数的不同组合数

    这个公式告诉我们如何直接计算组合数,但当我们使用递归法时,我们并不直接使用这个公式,而是通过递归关系来实现。 递归法的思路是将问题分解为更小的子问题,直到达到基本情况,然后逐步回溯得到原问题的解。在...

    java m取n 重复 不重复 排列组合 for循环嵌套递归

    在Java编程语言中,通过不同的控制结构如for循环、递归等可以实现这些排列组合的功能。 #### 二、核心知识点 ##### 1. 排列组合定义 - **排列**:是指从n个不同元素中任取m(m≤n)个元素按照一定的顺序排成一列。...

    递归求解几类排列组合问题

    下面我们将通过四个例子来演示如何使用递归法来解决排列组合问题: 一、类循环组合排列 在这个问题中,我们需要生成所有可能的二进制数。样本输入为4 2,样本输出为0000 0001 0010 0011 0100 0101 0110 0111 1000 ...

    java递归实现N个数全排列输出

    在这个场景中,我们将探讨如何使用Java语言,通过回溯法来递归实现全排列的输出。 首先,我们需要理解回溯法的基本概念。回溯法是一种试探性的解决问题的方法,它尝试逐步构建解决方案,并在每一步中检查当前的解...

    易语言-易语言递归法取排列组合例程(M选N递归法)

    在编程领域,递归是一种强大的算法,常用于解决复杂的问题,如排列组合。易语言作为中国本土开发的一种简单易学的编程语言,同样支持递归方法。本例程旨在教授如何利用易语言实现M选N的排列组合问题,这对于理解和...

    C#实现排列组合算法完整实例

    其实排列实现了,组合也就实现了,组合C(N,R)就是P(N,R)/P(R,R) ,实现这一功能比较简单的是递归算法,但考虑到递归的性能,下面采用了2种非递归的方法,具体代码如下 using System; using System.Collections....

    用java实现的经典递归算法

    当`low`等于`high`时,递归结束,输出当前组合。否则,遍历数组并交换`low`位置和当前位置的元素,递归处理剩下的元素,最后还原交换以保持原始数组不变。 通过这些例子,我们可以看到递归在解决分治策略问题时的...

    N个数全排列的非递归算法

    在描述中提到了一个博客链接,虽然具体内容没有给出,但通常博主会详细解释如何用非递归的方式解决全排列问题。非递归算法通常采用迭代或回溯的方式来完成,这种方式相对于递归可能会更节省内存,因为递归深度过大...

    计算组合数并输出组合

    为了输出所有组合,程序可能会使用一个双重循环,对每个i(1到n)和每个j(1到i),调用C(i, j)并打印结果。在VC6.0中,可以使用`cout`对象来打印组合数到控制台: ```cpp for (int i = 1; i ; i++) { for (int j ...

    Ackermann 递归与非递归两种解法

    这可能包括一组已知的输入值和对应的预期输出,以确保函数在不同情况下都能得到正确的结果。例如,可以测试 A(1, 2) = 3,A(2, 2) = 4,以及 A(3, 1) = 5 等情况。 总的来说,理解 Ackermann 函数可以帮助我们更好...

    [数理] 递归论 PDF

    例如,Σ算子用于将一个函数应用到另一个函数的所有可能输入上,而Π算子则用于对一组函数的输出进行组合。 2. **初等函数集**:这是数学中最基础的函数集合,包括常数、加法、乘法、指数等函数。在递归论中,这些...

    用递归算法写的杨辉三角

    在这个例子中,`pascal_triangle`函数使用递归生成每一行,并在每一步中构建新的行。每一行的生成都依赖于前一行,这就是递归的核心思想。然而,实际的代码可能会有更多优化,比如利用缓存来存储已经计算过的行,...

    递归算法事例及理论说明

    递归算法的核心在于将大问题分解为规模更小的同类问题,然后通过递归调用来求解这些子问题,最终组合成原问题的解答。 递归算法有以下几个特点: 1. **自我调用**:递归算法中,函数或子过程会直接或间接地调用...

    C++使用递归算法求交错幂集

    在本文中,我们将深入探讨交错幂集的定义,并通过一个C++程序来理解如何使用递归算法来实现它。 首先,交错幂集P(S)定义为集合S的所有n元子集的集合,其中每个元素x满足x1 ≠ x2,当1 ≤ i ≤ n。这意味着在构造...

    java编写的递归算法的经典事例

    本文将详细介绍一个用Java编写的递归算法实例,该实例用于实现字符数组的所有可能全排列。通过这个例子,我们可以深入理解递归的基本概念、工作原理以及如何在实际编程中应用递归来解决问题。 #### 代码解析 #####...

    组合排列组合排列组合排列组合排列

    在Java中,可以使用递归或动态规划的方法实现组合计算。例如,创建一个递归函数,当m为0时返回1,否则返回n * C(n-1, m-1)。递归方法虽然直观,但可能会有重复计算的问题,效率较低。动态规划则能避免这个问题,通过...

Global site tag (gtag.js) - Google Analytics