用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);
}
}
分享到:
相关推荐
排序算法:排序算法是将一组数据按照一定的顺序排列的算法。常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括...
6.2 几个典型的递归关系.. 6.3 用母函数方法求解递归关系 6.4 常系数线性齐次递归关系的求解 6.5 常系数线性非齐次递归关系的求解 6.6 非常系数非线性递归关系的求解 6.7 差分表法 6.8 stirling数 习 ...
入栈与出栈的所有排列可能性 三维图形的消隐算法分析 实用算法(基础算法 递推法) 数据结构:哈夫曼树的应用 数据结构学习(C++)——递归 双向链表 水波算法实例 算法 平摊分析 算法表达中的抽象机制 随机数算法 ...
入栈与出栈的所有排列可能性 三维图形的消隐算法分析 实用算法(基础算法 递推法) 数据结构:哈夫曼树的应用 数据结构学习(C++)——递归 双向链表 水波算法实例 算法 平摊分析 算法表达中的抽象机制 随机数算法 ...
在递归算法中,当i=n时,当前扩展结点是排列树的叶结点的父结点。此时算法检测图G是否存在一条从顶点x[n-1]到顶点x[n]的边和一条从顶点x[n]到顶点1的边。如果这两条边都存在,则找到一条旅行售货员回路,此时,算法...
在递归算法中,当i=n时,当前扩展结点是排列树的叶结点的父结点。此时算法检测图G是否存在一条从顶点x[n-1]到顶点x[n]的边和一条从顶点x[n]到顶点1的边。如果这两条边都存在,则找到一条旅行售货员回路,此时,算法...
回溯法的基本思想、回溯法的递归流程、用回溯法解决问题 的步骤;注意概念:解空间、可行解、约束函数、限界函数。 子集树和排列树的搜索; 皇后问题的回溯算法 * ; Hamilton 回路 * 与旅行商问题的回溯...
子问题的解应能组合成整个问题的解 对于字符串的排列问题: 如果能生成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解 代码如下: /** * Created by cshao on 12/23/14. */ function getPermutation(arr) { if (arr.length == 1) { return [arr]; } var ...
递归(记忆化,即自上而下) 递归(广度优先搜索) 查找所有子集 带有哈希表的数组 使用元素作为索引的数组 数组和动态规划 数组...排序和处理 数组 ... 组合 ... 棘手 数组(其他) 位操作 逐字节到 Leet 码映射 01...
动态规划:通过分解问题为子问题并存储子问题的解,减少重复计算,常用于优化递归解法。代码实现时需定义状态变量和状态转移方程。 图论:研究图的结构和性质的分支。代码可能涉及图的表示(邻接矩阵/邻接表)、遍历...
提示:二叉树遍历而已,给出前序和中序,求后序 解题思路 1、前序遍历的第一个字母必是 根 2、在中序遍历的字母串中找出 根字母,那么根字母左右...5、输出后序遍历时,只需按4的顺序从左到右排列,再倒置输出即可
5.4.4应用2——排列及排列树的回溯搜索 5.4.5应用3——最优化问题的回溯搜索 5.5分支限界法 5.5.1分支搜索算法 5.5.2分支限界搜索算法 5.5.3算法框架 5.6 图的搜索算法小结 习题 第四篇应用篇 第6章算法设计实践...
书中讲 解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、少年高斯求和方法、汉诺塔、斐波那契数列等经典问题和算法。引导读者深入...
掌握回溯法的基本思想。 掌握回溯法中问题的解空间、解向量、显式约束条件、隐式约束条件以及子集树与排列树的递归算法结构等内容。 掌握回溯法求解具体问题的方法。
第2章 递归与分治策略 2.1 速归的概念 2.2 分治法的基本思想 2.3 二分搜索技术 2.4 大整数的乘法 2.5 Strassen矩阵乘法 2.6 棋盘覆盖 2.7 合并排序 2.8 快速排序 2.9 线性时间选择 2.10 最接近点对问题 2.11 循环赛...