Алгоритм Задачи К Коду

Amet13

New Member
21.04.2012
2
0
#1
Помогите написать алгоритм, на словах, к моему коду.
задача размещения с повторениями и без
вот код:
Код:
import java.util.*;
public class End2 {
static int i = 1;
static ArrayList<String> fullBrute = new ArrayList<String>();
static void print(String s, int n, StringBuffer res) {
if (n == 0) {
System.out.println("№"+i+". "+res.toString());
i++;
}
else
for (int i = 0; i < s.length(); i++){
String news = s.substring(0, i) + s.substring(i + 1, s.length());
String simb = s.substring(i, i + 1);
print(news, n - 1, (new StringBuffer(res)).append(simb));
}
}

public static void brute(String l, int n){
print(l, n, new StringBuffer());
}
public static void main(String[] args) {
System.out.println("1. Введите в первой строке элементы размещений, например(123 или ABC)");		 
System.out.println("2. Введите во второй строке количество зарезервированных позиций, например(3)");
int k;
String n;
Scanner in = new Scanner(System.in);
n = in.next();
k = in.nextInt();
bruteOld(String.valueOf(n), k);
System.out.println("Полученные размещения с повторениями:");
for (int i = 1; i <= fullBrute.size(); i++){
System.out.println("№"+i+". "+fullBrute.get(i-1));
}
System.out.println("Полученные размещения без повторений:");
brute(n,k);
}
private static void bruteOld( String элементы_размещения, int количество ) { 
bruteOld( элементы_размещения, количество, new StringBuffer () );
}
private static void bruteOld (String элементы_размещения, int количество, StringBuffer output) {
if (количество <= 0){
fullBrute.add(output.toString());
}
else{		  
for (int i = 0; i < элементы_размещения.length(); i++){			  
output.append (элементы_размещения.charAt(i));
bruteOld (элементы_размещения, количество - 1, output);
output.deleteCharAt (output.length() - 1); 
}
}
}
}