题目:用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实现一个基于深度搜索的算法,来解决数学问题中的排列组合问题,特别是针对“十全时”的特定约束。通过逻辑分析和递归编程,我们可以找到所有符合条件的24小时制时间点。
在Java编程中,从n个不同的元素中取出m个元素的所有不重复的组合是一个常见的算法问题,这通常涉及到组合数学和递归或回溯的概念。本文将深入探讨如何使用Java来实现这一功能。 首先,我们需要了解组合的基本概念。...
25. 打印字符串中所有字符的排列:这需要使用回溯算法来遍历所有可能的排列组合。 《剑指Offer》中的题目覆盖了大量编程面试中的常见问题,通过对这些题目的练习,不仅能够提高编程能力和解题技巧,而且还能在面试...
游戏通常由四张扑克牌组成,玩家需运用加、减、乘、除(可以有括号)等基本算术运算,将这四个数字组合起来,使其结果等于24。此游戏不仅能锻炼人的计算能力和逻辑思维能力,还具有很高的娱乐性。 #### 二、游戏...
- 算法通常由顺序、选择和循环三种基本控制结构组合而成。正确答案是D。 2. **数据存储结构**: - 数据的存储结构指的是数据的逻辑结构在计算机内存中的表示,选项B正确。 3. **二叉树遍历**: - 对于给定的...
在每次循环中,我们都会检查当前的数字组合(`i`, `j`, `k`)是否满足不重复的条件,即`i!=j && j!=k && i!=k`。如果满足条件,计数器`t`加一,并打印出这个有效的三位数。 需要注意的是,由于我们的循环是从1开始...
**知识点**:水仙花数(Narcissistic number)是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。本题要求找出100到999之间的所有水仙花数,涉及到数学计算和字符串处理技巧。 #### 题目四:质因数分解 **...