有1,2,2,3,4,5六个数,要求输出他们组合的全排列,4不能在第三位,5和3不能相邻
2013-03-01 22:03
537 查看
之前面试的时候做过这个题目,当时用了很笨的穷举法,今天在网上看到了一个感觉比较高级的递归法,学习一下。不过话说算法复杂度不一定比穷举法低。以下是原文(略有修改)。
其实在这个问题上看似很简单,但是对数组和字符处理不够熟练,就会显的很麻烦.
其实在这个问题上看似很简单,但是对数组和字符处理不够熟练,就会显的很麻烦.
import java.util.ArrayList; import java.util.List; public class Permutation { public static List<String> permutation = new ArrayList<String>(); public static void main(String[] args) { char[] numbers = new char[]{'1','2','2','3','4','5'}; permute(numbers, 0, numbers.length-1); for(String str:permutation){ System.out.println(str); } } private static void permute(char[] n, int cur, int end) { if(cur == end){ String str = new String(n); if(permutation.contains(str)||str.charAt(2)=='4'||str.contains("35") ||str.contains("53")) return; permutation.add(str); return; } for(int i=cur; i<=end; i++){ swap(n, cur, i); permute(n, cur+1, end); swap(n, cur, i); } } private static void swap(char[] n, int cur, int i) { char temp = n[cur]; n[cur] = n[i]; n[i] = temp; } }
相关文章推荐
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 有1,2,2,3,4,5六个数,要求输出他们组合的全排列
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 输出{1,2,2,3,4,5}排列组合,4不能在第三位,3和5不能相邻
- 面试题:输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 【2015/10/13】打印1,2,2,3,4,5六个数的组合,4不在第三位,3和5不能相邻
- 输出1,2,2,3,4,5的所有排列组合,4不能在第3位,3和5不能相邻
- 122345这6个数字,输出它所有可能的组合;要求4不能在第3位,3和5不能相连。
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
- (原创)java 输出排列组合,’4‘ 不能在第三位,‘3’,‘5’不能相连。
- 用1、2、2、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连
- 有4个线程A、B、C、D,分别打印1、2、3、4,请同时启动他们,但是要求按照1234的顺序输出结果
- 10、 java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况
- hdu2045 有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.
- 用1、2、3、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 要求:"4"不能在第三位,"3"与"5"不能相连。
- 1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、412345等.要求:"4"不能在第三位,"3"与"5"不能相连.
- (要求使用指针方法)一个班有四名学生,五门课。(1)求第一门课的平均分;(2)找出有两门以上课不及格的学生,输出他们的学号、全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩均在85