一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连。
我在实现这个算法的时候,按照len不固定的方式,利用递归方式进行处理。
感觉我的算法复杂度还是挺高的。过程中,不断的创建新的数组列别。
如果你有更好的算法,请发上来,可以好好学习下。
package com.sw.suanfa.first.ten;
import java.util.ArrayList;
import java.util.List;
/**
* 用java语言实现,一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连。
* 我的做法:首先,我确定用递归实现。
* 其次,不排除任何条件,打出所有的组合。
* 在递归中增加了preNum,和level参数,可方便的对条件【4不能在第3位,3和5不能相连】进行过滤。
* 在递归正增加了intList,便于排除重复。比如122345这个串中有2个2.则按照以上的算法会出现重复的情况。
* 这里用了一个intList主要是利用其方法indexOf,实际也可以通过数组循环的方式来查找,这里为了方便就用了list。
*
* @author songwei
* @date 2010.3.24
*
*/
public class ComposeArray {
public static void main(String[