`

递归解排列

    博客分类:
  • j2se
阅读更多

用1、2、2、3、4、5六个数排列组合!求出所有的排列方式,要求4不出现在第3位,3、5不能相邻!

 

package com.recle;

public class test1
{
    private int[] numbers = new int[]
    { 1, 2, 3, 3, 4, 5 };
    public int n;
    private String lastResult = "";

    private boolean validate(String s)
    {
        if (s.compareTo(lastResult) <= 0)
            return false;
        if (s.charAt(2) == '4')
            return false;
        if (s.indexOf("35") >= 0 || s.indexOf("53") >= 0)
            return false;
        return true;
    }

    public void list(String index, String result)
    {
        for (int i = 0; i < numbers.length; i++)
        {
            if (index.indexOf(i + 48) < 0)
            {
                String s = result + String.valueOf(numbers[i]);
                if (s.length() == numbers.length)
                {
                    if (validate(s))
                    {
                        System.out.println(s);
                        lastResult = s;
                        n++;
                    }
                    break;
                }
                list(index + String.valueOf(i), s);
            }
        }
    }

    public static void main(String[] args)
    {
        test1 t = new test1();
        t.list("", "");
        System.out.println("总数:" + t.n);

    }
}

 

分享到:
评论

相关推荐

    重叠子问题的递归最优解.zip

    排序算法:排序算法是将一组数据按照一定的顺序排列的算法。常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括...

    组合数学及其算法

    6.2 几个典型的递归关系.. 6.3 用母函数方法求解递归关系 6.4 常系数线性齐次递归关系的求解 6.5 常系数线性非齐次递归关系的求解 6.6 非常系数非线性递归关系的求解 6.7 差分表法 6.8 stirling数 习 ...

    数据结构与算法综合资料库.CHM

    入栈与出栈的所有排列可能性 三维图形的消隐算法分析 实用算法(基础算法 递推法) 数据结构:哈夫曼树的应用 数据结构学习(C++)——递归 双向链表 水波算法实例 算法 平摊分析 算法表达中的抽象机制 随机数算法 ...

    数据结构与算法综合资料库

    入栈与出栈的所有排列可能性 三维图形的消隐算法分析 实用算法(基础算法 递推法) 数据结构:哈夫曼树的应用 数据结构学习(C++)——递归 双向链表 水波算法实例 算法 平摊分析 算法表达中的抽象机制 随机数算法 ...

    TSP回溯法实现从武汉出发,进行34个省会的遍历,最后回到武汉,要求输出遍历路径和最后总里程

    在递归算法中,当i=n时,当前扩展结点是排列树的叶结点的父结点。此时算法检测图G是否存在一条从顶点x[n-1]到顶点x[n]的边和一条从顶点x[n]到顶点1的边。如果这两条边都存在,则找到一条旅行售货员回路,此时,算法...

    我写的论文(TSP中的贪心法回溯算法)

    在递归算法中,当i=n时,当前扩展结点是排列树的叶结点的父结点。此时算法检测图G是否存在一条从顶点x[n-1]到顶点x[n]的边和一条从顶点x[n]到顶点1的边。如果这两条边都存在,则找到一条旅行售货员回路,此时,算法...

    回溯法 算法

    回溯法的基本思想、回溯法的递归流程、用回溯法解决问题 的步骤;注意概念:解空间、可行解、约束函数、限界函数。  子集树和排列树的搜索;  皇后问题的回溯算法 * ;  Hamilton 回路 * 与旅行商问题的回溯...

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

    子问题的解应能组合成整个问题的解 对于字符串的排列问题: 如果能生成n-1个元素的全排列,就能生成n个元素的全排列。对于只有一个元素的集合,可以直接生成全排列。所以全排列的递归终止条件很明确,只有一个元素...

    数据结构及算法编程(阿蒙工作室)

    ☆ “二分法”求二元方程的解 ☆ Bresenham高效画线算法 ☆ C++的沉迷与爱恋 ☆ C++复习题 二 ☆ C++复习题一 ☆ DES加密算法破解方法 ☆ DES算法及其应用误区 ☆ N皇后问题 ☆ 采用循环双向链表, 能实现多个长整型...

    数据结构经典问题和算法分析

    能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小...

    分治策略

    解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题; 合并:将各个子问题的解合并为原问题的解。 分治法:可以看作是二叉树的递归 全排列 问题:计算从1,2,…,n的n个数的全排列 思路:分解:首先...

    算法设计复习资料

    2.下面 的解空间不是排列树。 (A)n皇后问题 (B)0-1背包问题 (C)批处理作业调度问题 (D)旅行商问 3.关于分治法的说法,下面说法错误的是 。 (A)该方法把一个复杂的问题分成两个或更多的相同子问题 ...

    JavaScript实现穷举排列(permutation)算法谜题解答

    穷举一个数组中各个元素的排列 策略 减而治之、递归 JavaScript解 代码如下: /**  * Created by cshao on 12/23/14.  */ function getPermutation(arr) {  if (arr.length == 1) {  return [arr];  }  var ...

    leetcode感觉难度大-crackingCodingInterview:破解编码面试

    递归(记忆化,即自上而下) 递归(广度优先搜索) 查找所有子集 带有哈希表的数组 使用元素作为索引的数组 数组和动态规划 数组...排序和处理 数组 ... 组合 ... 棘手 数组(其他) 位操作 逐字节到 Leet 码映射 01...

    ACM模板和一些题目的代码实现

    动态规划:通过分解问题为子问题并存储子问题的解,减少重复计算,常用于优化递归解法。代码实现时需定义状态变量和状态转移方程。 图论:研究图的结构和性质的分支。代码可能涉及图的表示(邻接矩阵/邻接表)、遍历...

    POJ 2255 java

    提示:二叉树遍历而已,给出前序和中序,求后序 解题思路 1、前序遍历的第一个字母必是 根 2、在中序遍历的字母串中找出 根字母,那么根字母左右...5、输出后序遍历时,只需按4的顺序从左到右排列,再倒置输出即可

    算法设计与分析PPT(C语言完整版)

    5.4.4应用2——排列及排列树的回溯搜索 5.4.5应用3——最优化问题的回溯搜索 5.5分支限界法 5.5.1分支搜索算法 5.5.2分支限界搜索算法 5.5.3算法框架 5.6 图的搜索算法小结 习题 第四篇应用篇 第6章算法设计实践...

    Better-Explained[数学篇]

    书中讲 解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、少年高斯求和方法、汉诺塔、斐波那契数列等经典问题和算法。引导读者深入...

    算法实验回溯法

    掌握回溯法的基本思想。 掌握回溯法中问题的解空间、解向量、显式约束条件、隐式约束条件以及子集树与排列树的递归算法结构等内容。 掌握回溯法求解具体问题的方法。

    算法设计与分析王晓东

    第2章 递归与分治策略 2.1 速归的概念 2.2 分治法的基本思想 2.3 二分搜索技术 2.4 大整数的乘法 2.5 Strassen矩阵乘法 2.6 棋盘覆盖 2.7 合并排序 2.8 快速排序 2.9 线性时间选择 2.10 最接近点对问题 2.11 循环赛...

Global site tag (gtag.js) - Google Analytics