백준
브루트포스 n과 m의 첫번째 문제와 두번째 문제를 풀었다.
n과 m(1)
package bj;
import java.util.*;
public class bj_15649 {
static boolean[] c = new boolean[10];
static int[] a = new int[10];
static void go(int index, int n, int m) {
if (index == m) {
for (int i=0; i<m; i++) {
System.out.print(a[i]);
if (i != m-1) System.out.print(' ');
}
System.out.println();
return;
}
for (int i=1; i<=n; i++) {
if (c[i]) continue;
c[i] = true;
a[index] = i;
go(index+1, n, m);
c[i] = false;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
go(0,n,m);
}
}
정해둔 시간내에 풀지 못해 결국 답을 참고해버린 문제이다. 아쉬움이 크다.
n과 m(2)
package bj;
import java.util.*;
public class bj_15650 {
static boolean[] c = new boolean[10];
static int[] a = new int[10];
static void go(int index, int start, int n, int m) {
if (index == m) {
for (int i=0; i<m; i++) {
System.out.print(a[i]);
if (i != m-1) System.out.print(' ');
}
System.out.println();
return;
}
for (int i=start; i<=n; i++) {
if (c[i]) continue;
c[i] = true;
a[index] = i;
go(index+1, i+1, n, m);
c[i] = false;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
go(0,1,n,m);
}
}
(1)에서 조건이 추가된 문제이다. 오름차순이라는 조건때문에 go 함수에 start인자를 추가하였다.