package clq;
public class test {
/*拼接的字符个数*/
public static int SURPLUS_STRING_COUNT=0;
/*需要排序对象的个数*/
public static int SORT_SIZE=4;
/*每组排序字符的大小*/
public static int EACH_GROUP_SIZE=4;
/*每行结果打印个数*/
public static int EACH_LINE_PRINT_NUMBER=4;
/**
* @param args
*/
public static void main(String[] args) {
String[] charArray={"a","b","c","d"};
for (int i = 0; i < 4; i++) {
Character_Spliced(charArray[i],Filter_Array(charArray[i],charArray));
}
}
/**
* 字符组合递归方法
* @param already_spli ced_string 需要继续拼接的字符串
* @param surplus_character_array 剩余的为拼接字符数组
*/
public static void Character_Spliced(String already_spliced_string,String[] surplus_character_array)
{
if(surplus_character_array.length==SORT_SIZE-EACH_GROUP_SIZE+1)
{
for (int i = 0; i < surplus_character_array.length; i++)
{
if(SURPLUS_STRING_COUNT%EACH_LINE_PRINT_NUMBER==0)
{
System.out.print("\n");
}
SURPLUS_STRING_COUNT++;
/*打印拼接完的字符*/
System.out.print(already_spliced_string+surplus_character_array[i]+"\t");
}
return;
}
else
{
for (int i = 0; i < surplus_character_array.length; i++) {
Character_Spliced(already_spliced_string+surplus_character_array[i],Filter_Array(surplus_character_array[i],surplus_character_array));
}
}
}
/**
* 字符数组过滤
* @param need_deleted_str 需要被删除的字符
* @param old_array 讲被过滤的数组
* @return 返回过滤之后的数组
*/
public static String[] Filter_Array(String need_deleted_str,String[] old_array)
{
if(old_array== null||old_array.length<=1)
{
return old_array;
}
String[] newArr=new String[old_array.length-1];
int count=0;
for (int i = 0; i < old_array.length; i++) {
if(!old_array[i].equals(need_deleted_str))
{
newArr[count]=old_array[i];
count++;
}
}
return newArr;
}
public class test {
/*拼接的字符个数*/
public static int SURPLUS_STRING_COUNT=0;
/*需要排序对象的个数*/
public static int SORT_SIZE=4;
/*每组排序字符的大小*/
public static int EACH_GROUP_SIZE=4;
/*每行结果打印个数*/
public static int EACH_LINE_PRINT_NUMBER=4;
/**
* @param args
*/
public static void main(String[] args) {
String[] charArray={"a","b","c","d"};
for (int i = 0; i < 4; i++) {
Character_Spliced(charArray[i],Filter_Array(charArray[i],charArray));
}
}
/**
* 字符组合递归方法
* @param already_spli ced_string 需要继续拼接的字符串
* @param surplus_character_array 剩余的为拼接字符数组
*/
public static void Character_Spliced(String already_spliced_string,String[] surplus_character_array)
{
if(surplus_character_array.length==SORT_SIZE-EACH_GROUP_SIZE+1)
{
for (int i = 0; i < surplus_character_array.length; i++)
{
if(SURPLUS_STRING_COUNT%EACH_LINE_PRINT_NUMBER==0)
{
System.out.print("\n");
}
SURPLUS_STRING_COUNT++;
/*打印拼接完的字符*/
System.out.print(already_spliced_string+surplus_character_array[i]+"\t");
}
return;
}
else
{
for (int i = 0; i < surplus_character_array.length; i++) {
Character_Spliced(already_spliced_string+surplus_character_array[i],Filter_Array(surplus_character_array[i],surplus_character_array));
}
}
}
/**
* 字符数组过滤
* @param need_deleted_str 需要被删除的字符
* @param old_array 讲被过滤的数组
* @return 返回过滤之后的数组
*/
public static String[] Filter_Array(String need_deleted_str,String[] old_array)
{
if(old_array== null||old_array.length<=1)
{
return old_array;
}
String[] newArr=new String[old_array.length-1];
int count=0;
for (int i = 0; i < old_array.length; i++) {
if(!old_array[i].equals(need_deleted_str))
{
newArr[count]=old_array[i];
count++;
}
}
return newArr;
}
}
可以修改EACH_GROUP_SIZE常量。可以替换字符数组。欢迎高手指导