Algorithm/๋ฐฑ์ค
๋ฐฑ์ค 15652๋ฒ : N๊ณผ M (4) (Java)
skyey94
2022. 1. 17. 01:33
๐ ๋ฌธ์ ๋งํฌ
๐ ํ์ด ๊ณผ์
- ์ฌ๊ท ์ ํ์ ๋ฌธ์ ์
๋๋ค.
- 15650๋ฒ ๋ฌธ์ ์ ์กฐ๊ฑด๋ฌธ์์ ์ด์ ์ ๊ฐ(๋ง์ง๋ง์ ๋ฐฐ์ด์ ํ ๋นํ ๊ฐ)๊ณผ ์ง๊ธ ๋ฃ์ ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ์ ๋ ๋จ์ํ ์ด ๋๊ฐ์ง์ ๋ํ ์กฐ๊ฑด๋ฌธ์ ๋ช
์ํด์ ๊ตฌํํ์ต๋๋ค.
- ์ถํ, ์ข ๋ ๊ฐ๋จํ๊ฒ ์์ฑ์ ํด๋ณด๊ฒ ์ต๋๋ค.
๐ป ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int n,m;
static int[] arr;
static boolean[] visited;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
visited = new boolean[n + 1];
arr = new int[m];
solve(0);
}
public static void solve(int idx){
if(idx == m){
for(int i = 0; i< m; i++){
System.out.print(arr[i] + " ");
}
System.out.println();
return;
}
for(int i = 1; i<= n; i++){
if(visited[i] && arr[idx - 1] == i){
visited[i] = true;
arr[idx] = i;
solve(idx + 1);
visited[i] = false;
}
else if(!visited[i]){
if(idx == 0 || arr[idx - 1] < i){
visited[i] = true;
arr[idx] = i;
solve(idx + 1);
visited[i] = false;
}
}
}
}
}