|
์ฝ๋ ์์ฑํ๊ธฐ
import java.util.Scanner;
public class NM1 {
public static void perm(int[] arr, int[] output, boolean[] visited, int depth, int n, int m) {
if(depth == m) {
for(int i=0; i<output.length; i++) {
System.out.print(output[i] + " ");
}
System.out.println();
return;
}
for(int i=0; i<n; i++) {
if(!visited[i]) {
visited[i] = true;
output[depth] = i+1;
perm(arr,output,visited,depth+1,n,m);
visited[i] = false;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] arr = new int[n];
int[] output = new int[m];
boolean[] visited = new boolean[n];
perm(arr,output,visited,0,n,m);
}
}
Java
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
์์ด์ ์ด์ฉํด ํ์๋ค
for๋ฌธ์ ์ฃผ์ด์ง ์ซ์๊น์ง ๋ฐ๋ณตํ๋ฉฐ
๋ง์ฝ ๊ทธ ์ธ๋ฑ์ค์ ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด
๋ฐฉ๋ฌธํ๋ค ์ฒดํฌ๋ฅผํ๊ณ ๊ทธ ๊ฐ์ +1ํด์ output์ ๋ฃ๋๋ค
๊ทธ๋ฆฌ๊ณ ๋ค์ ์์ด ํจ์๋ฅผ ํธ์ถํ๋๋ฐ ๊น์ด๋ฅผ 1์ถ๊ฐํด์ ๋ฃ๋๋ค
๊ทธ๋ ๊ฒ ๋๋ฉด output์ ๋ค์ ์ธ๋ฑ์ค์ vistedํ์ง ์์ ๊ฐ์ด ๋ด๊ธฐ๊ฒ ๋๊ณ
๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ๊ตฌํ๊ณ ์ํ๋ ๊ฐ์์ ๋๋ฌํ๋ฉด ์ถ๋ ฅ์ ํ๋ค ๋ฆฌํด์ ํ๊ฒ๋๋ค
๊ทธ๋ ๊ฒ ๋๋ฉด ๋ค์ ์์ ํจ์๋ก ๋๋์๊ฐ๊ณ for๋ฌธ์ด ํ๋ +1๋๊ณ ๋ค์ ์์ด์ด ๋๋ค