ㅡ. N과M(1) : 순열

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package backjun;
 
import java.io.*;
import java.util.*;
public class BOJ_15649_N_M_1{
 
    static int[] k;
    static boolean[] c;
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int n = Integer.parseInt(st.nextToken());
        int select = Integer.parseInt(st.nextToken());
        k = new int[select];
        c = new boolean[n+1];
        make(0, n, select, k);
        
    }
    static void make(int index, int n, int select, int[] k) {
        if(index == select) {
            for(int i=0; i<k.length; i++)
                System.out.print(k[i]+" ");
            System.out.println();
        }else {
            for(int i=1; i<=n; i++) {
                if(c[i]==truecontinue;
                c[i] = true;
                k[index] = i;
                make(index+1, n, select, k);
                c[i] = false;
            }
        }
    }
 
}
cs

 

ㅡ. N과M(2) : 조합

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package backjun;
 
import java.util.*;
import java.io.*;
public class BOJ_15650_N_M_2 {
 
    static boolean[] c;
    static int[] arr;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        c = new boolean[n+1];
        arr = new int[m];
        make(0,1,n,m);
    }
    static void make(int index, int start, int n, int m) {
        if(index == m) {
            for(int i=0; i<arr.length; i++) {
                System.out.print(arr[i] +" ");
            }
            System.out.println();
        }else {
            for(int i=start; i<=n; i++) {
                if(c[start]==truecontinue;
                c[start] = true;
                arr[index] = i;
                make(index+1, i+1, n, m);
                c[start] = false;
            }
        }
    }
 
}
 
cs

 

ㅡ. N과M(3) : 중복순열

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package backjun;
 
import java.util.*;
import java.io.*;
public class BOJ_15651_N_M_3 {
 
    static int[] arr;
    static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        arr = new int[m];
        make(0, n, m);
        System.out.println(sb.toString());
    }
    static void make(int index, int n, int m) {
        if(index == m) {
            for(int i=0; i<arr.length; i++)
                sb.append(arr[i]+" ");
            sb.append("\n");
            
        }else {
            for(int i=1; i<=n; i++) {
            
                arr[index] = i;
                make(index+1, n, m);
            }
        }
    }
 
}
 
cs

 

ㅡ. N과M(4) : 중복조합

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package backjun;
 
import java.util.*;
import java.io.*;
public class BOJ_15652_N_M_4 {
 
    static int[] arr;
    static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        arr = new int[m];
        make(0,1,n,m);
        System.out.println(sb.toString());
    }
    static void make(int index, int start, int n, int m) {
        if(index == m) {
            for(int i=0; i<arr.length; i++)
                sb.append(arr[i]+" ");
            sb.append("\n");
        }else {
            for(int i=start; i<=n; i++) {
                arr[index] = i;
                make(index+1, i, n, m);
            }
        }
    }
 
}
 
cs