打印某些数字的排列组合
2010-07-08 21:14
225 查看
原帖:http://topic.csdn.net/u/20100605/00/10239b5c-3cf7-4402-a537-3d4f302d2824.html
/* 该公司笔试题就1个,要求在10分钟内作完。 题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。 请问这题怎么做呢 */ /* 构思:这里需要先将其中一个 2 当成一个特殊的数字 6 来处理,然后在排除重复的情况,采用正则处理. */ //package com.ricky.www; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.LinkedHashSet; public class Test2{ public static void main(String[] args){ LinkedHashSet<String> set = process(); int ln = 0; for(String str : set){ System.out.printf("%-7s",str); if(++ln % 10 == 0){ System.out.println(); } } System.out.println(); System.out.println("Total: " + set.size()); } private static LinkedHashSet<String> process(){ LinkedHashSet<String> set = new LinkedHashSet<String>(); String regex1 = "([1-6])(?!//1)([1-6])(?!//1|//2|4)([1-6])(?!//1|//2|//3)([1-6])(?!//1|//2|//3|//4)([1-6])(?!//1|//2|//3|//4|//5)([1-6])"; String regex2 = "35"; Pattern pattern1 = Pattern.compile(regex1); Pattern pattern2 = Pattern.compile(regex2); Matcher matcher = null; int ln = 0; for(int i = 123456 ; i <= 654321 ; i ++){ matcher = pattern1.matcher(i + ""); //测试不重复 if(!matcher.matches()){ continue; } //测试35不相连 matcher = pattern2.matcher(i + ""); if(matcher.find()){ continue; } String element = i + ""; element = element.replace("6","2"); set.add(element); } return set; } }
相关文章推荐
- 【组合+全排列】补充上篇【如何打印没有重复数字的自然数字列表?】
- 递归实现数字排列组合
- 排列平方数 若干不同的数字,排列组合后能产生多少个平方数? 下面的代码解决了这个问题。
- 打印一维数组的全排列组合,递归算法
- 【Java中 任意几个数字获取其所有的排列组合】
- 用1、2、3、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 要求:"4"不能在第三位,"3"与"5"不能相连。
- java练习:打印 数字1、2、3、4的组合,不能以4开头,1和3不能相邻,且数字不能重复
- leetcode-31 Next Permutation 数字排列组合找到下一个更大值
- 用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列
- 面试题─用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列
- 形如数组1223打印所有不同的组合排列java
- 【Java中 任意几个数字获取其所有的排列组合】
- 用1、2、2、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列
- leetcode-46、47 Permutations/II 数字的排列组合
- Java打印一组数字的全部排序组合
- 数字的排列与组合
- 该公司笔试题就1个,要求在10分钟内作完。 题目如下:用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列, 如:512234、412325等,要求:"4"不能在第三位,"3"与"5"不能相连。
- python基础编程_1_数字的组合排列
- 给定一系列数字,请打印出这些数字的所有排列,例如1,2,2,3,4,请列出所有的排列
- php通过排列组合实现1到9数字相加都等于20的方法