Pagini recente » Cod sursa (job #439480) | Cod sursa (job #2138926) | Cod sursa (job #394268) | Rating Ciaun Dumitrel (dumi999) | Cod sursa (job #2203173)
import java.io.*;
import java.util.*;
public class Main {
static class Task {
int n, k;
public void read() {
MyScanner sc = new MyScanner();
n = sc.nextInt();
k = sc.nextInt();
}
private void writeOutput(ArrayList<ArrayList<Integer>> result) {
try {
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("combinari.out")));
for (ArrayList<Integer> arr : result) {
for (int number : arr) {
pw.printf("%d ", number);
}
pw.printf("\n");
}
pw.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public ArrayList<ArrayList<Integer>> solution() {
ArrayList<ArrayList<Integer>> sol = new ArrayList<>();
boolean[] viz = new boolean[n + 1];
LinkedList<Integer> part = new LinkedList<>();
bkt(sol, part, viz, 1);
return sol;
}
public void bkt(ArrayList<ArrayList<Integer>> sol, LinkedList<Integer> partiala, boolean vizitat[], int c) {
if (partiala.size() == k) {
sol.add(new ArrayList<>(partiala));
}
for (int i = 1; i <= n; i++) {
if(partiala.size() != 0) {
if(i < partiala.get(partiala.size()-1)) {
continue;
}
}
if ((n - i) >= (k - c)) {
if (vizitat[i] == false) {
vizitat[i] = true;
partiala.add(i);
c++;
bkt(sol, partiala, vizitat, c);
c--;
int lungime = partiala.size();
partiala.remove(lungime - 1);
vizitat[i] = false;
}
}
}
}
public void solve() {
read();
writeOutput(solution());
}
}
public static void main(String[] args) {
new Task().solve();
}
}
class MyScanner {
BufferedReader br;
StringTokenizer st;
public MyScanner() {
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream("combinari.in")));
} catch (FileNotFoundException e) {
// TODO: handle exception
}
}
String next() {
while (st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
String nextLine() {
String str = "";
try {
str = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
}