题目:用1、2、2、3、4、5这6个数字组成一个序列,列出所有可能出现的顺序。
要求:
1. 数字4不能位于第三位
2. 3和5不能连在一起
今天上网看到一个好的解决思路,整理如下:
代码:
public class Test{ static int[] in={1,2,2,3,4,5}; public static void main(Strin[] args){ for(int i = 122345;i<=543221;i++){ String string = String.valueOf(i); if(checkOne(string) && checkTwo(string) && checkThree(string) && checkFour(string)){ System.out.println(string); } } } /** * 不包含0,6,7,8,9 * @author zkf * @createTime 2013-7-20 * @param str * @return boolean */ public static boolean checkOne(String str){ Pattern p = Pattern.compile("[0[6-9]]"); Matcher matcher = p.matcher(str); matcher.matches(); if(matcher.find()){ return false; } return true; } /** * 必须是1,2,2,3,4,5六个数 * @author zkf * @createTime 2013-7-20 * @param str * @return boolean */ public static boolean checkTwo(String str){ for (int i = 0; i < in.length; i++) { if(!str.contains(String.valueOf(in[i]))){ return false; } } if(str.indexOf("2") == str.lastIndexOf("2")){ return false; } return true; } /** *4不能位于第3位 * @author zkf * @createTime 2013-7-20 * @param str * @return boolean */ public static boolean checkThree(String str){ if(str.indexOf("4") == 2){ return false; } return true; } /** *35不能相连 * @author zhangkefei * @createTime 2013-7-20 * @param str * @return boolean */ public static boolean checkFour(String str){ if(Math.abs(str.indexOf("3")-str.indexOf("5")) == 1){ return false; } return true; } }
相关推荐
组合算法主要涉及的是从n个不同元素中取出k个元素的所有可能组合,不考虑顺序。例如,从数字1、2、3中取出两个数字的所有组合为(1, 2)、(1, 3)和(2, 3)。这种问题通常可以通过递归的方式来解决,可以有效地减少代码...
4. **NumTest.java** 可能是一个测试类,用于验证和展示`Combination`、`ArrangeCombine`和`Arrange`类的功能,通过实例化这些类并调用相关方法,打印出所有组合或排列结果。 以上代码只是简单的示例,实际应用中...
### Java算法练习题知识点解析 #### 1. 斐波那契数列 - **描述**:编写一个程序,计算斐波那契数列的前N项。 - **实现思路**: - 使用循环结构(如`for`循环)来依次计算每一项的值。 - 设置两个变量分别存储...
【排列组合的算法作业 Java】 在编程领域,排列和组合是经典的算法问题,它们属于组合数学的一部分,常常出现在数据结构与算法课程的作业中。排列指的是从给定的元素集合中选择并按特定顺序排列所有可能的组合,而...
- **打印所有可能的组合**:给定一个数字N,找出所有满足N=1*x+2*y+3*z的(x,y,z)组合。通过三重循环实现。 - **代码示例**: ```java public void printNumAssemble(int num) { for (int i = 0; i ; i++) { for...
这可能包括Base32、Base64等编码方式,它们可以将二进制数据转换为可打印的字符,同时尽可能减少字符长度。 6. **Java实现** 在Java端口的Sqids中,开发者可以找到一个类库,该库包含生成和解析ID的API。这个库...
在编程领域,"吸血鬼数字"是一种特殊的数字类型,这个概念源于数学,后被引入到编程挑战中,成为一种有趣的算法问题。4位吸血鬼数字是指由四个不同的数字组成,可以分解成两个两位数的乘积,这两个两位数的各位数字...
第3章 Java常用算法 3.1递归算法 3.2冒泡排序算法 3.3 快速排序算法 3.4选择排序算法 3.5直接插入算法 3.6希尔排序算法 3.7 二分查找算法 3.8 二叉树 3.9 图的实现 3.10 生产者消费者的实现 3.11 银行家算法 3.12 ...
描述中提到的“基于字典排序的结果输出”意味着我们需要在生成所有可能的组合后,按照某种特定的顺序(可能是字母或数字的自然顺序)进行排序。这对于理解和比较不同组合时非常有用。 首先,我们可以创建一个辅助...
5. **错误处理**:在实际应用中,程序需要能够处理无效的用户输入,比如只有一个运算符、缺少数字或者非法的运算符组合。在"4600071_calculator.java"中,这部分可能包含检查输入的有效性并给出相应错误提示的代码。...
在程序设计中,洗牌算法通常用来随机化一组元素的顺序,使得每次运行程序时都能得到不同的结果,这对于游戏开发、随机抽样等场景非常有用。 #### 二、关键概念与技术点 1. **数组(Array)与列表(List)** - **数组...
在Java编程中,从n个不同的元素中取出m个元素的所有不重复的组合是一个常见的算法问题,这通常涉及到组合数学和递归或回溯的概念。本文将深入探讨如何使用Java来实现这一功能。 首先,我们需要了解组合的基本概念。...
25. 打印字符串中所有字符的排列:这需要使用回溯算法来遍历所有可能的排列组合。 《剑指Offer》中的题目覆盖了大量编程面试中的常见问题,通过对这些题目的练习,不仅能够提高编程能力和解题技巧,而且还能在面试...
游戏通常由四张扑克牌组成,玩家需运用加、减、乘、除(可以有括号)等基本算术运算,将这四个数字组合起来,使其结果等于24。此游戏不仅能锻炼人的计算能力和逻辑思维能力,还具有很高的娱乐性。 #### 二、游戏...
- 算法通常由顺序、选择和循环三种基本控制结构组合而成。正确答案是D。 2. **数据存储结构**: - 数据的存储结构指的是数据的逻辑结构在计算机内存中的表示,选项B正确。 3. **二叉树遍历**: - 对于给定的...
总结而言,本文档通过讲解十全时问题的背景、逻辑分析方法以及Java代码实现,向读者展示了如何运用深度搜索算法解决排列组合问题。这种方法不仅适用于本问题,同样可以应用于其他需要穷举搜索的场景,展示了计算机...
**知识点**:水仙花数(Narcissistic number)是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。本题要求找出100到999之间的所有水仙花数,涉及到数学计算和字符串处理技巧。 #### 题目四:质因数分解 **...
题目询问用1、2、3、4四个数字可以组成多少个无重复数字的三位数,以及具体的数字组合。解决这类问题需要用到组合数学中的排列组合原理。 #### 知识点12:利润提成规则下的奖金计算 题目描述了一个基于公司利润的...