public static void arragments(int[] a, int first, int num)
{
if(num == 0)
{
for(int i : a)
{
System.out.print(i);
}
System.out.println();
return;
}
for(int i = first; i < first + num; i++)
{
swap(a, i, first);
arragments(a, first + 1, num - 1);
swap(a, first, i);
}
}
private static void swap(int[] a, int i, int first) {
int temp = a[i];
a[i] = a[first];
a[first] = temp;
}
public static List findAllArrangment(String input)
{
List<String> result = new ArrayList<String>();
if(input.length() == 0)
{
result.add("");
return result;
}
else
{
char a = input.charAt(0);
List<String> subResult = new ArrayList<String>();
String remain = input.substring(1);
subResult = findAllArrangment(remain);
for(String s : subResult)
{
for (int j = 0; j <= s.length(); j++) {
result.add(insertCharAt(s, a, j));
}
}
return result;
}
}
public static List findAllCombination(String input)
{
List<String> result;
if(0 == input.length())
{
result = new ArrayList();;
result.add(new String(""));
return result;
}
else
{
char c = input.charAt(0);
String remain = input.substring(1);
result = findAllCombination(remain);
List<String> moreResult = new ArrayList();;
for(String s : result)
{
moreResult.add(s+c);
}
result.addAll(moreResult);
return result;
}
}
public static String insertCharAt(String word, char c, int i) {
String start = word.substring(0, i);
String end = word.substring(i);
return start + c + end;
}
依旧排列组合问题
最新推荐文章于 2025-01-07 21:08:51 发布