package algorithm_live.day02.pcs;
import java.util.Arrays;
import java.util.Scanner;
public class DiceTest {
static int N, numbers[], totalCnt;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N=sc.nextInt();
numbers = new int[N];
int M =sc.nextInt();
switch (M) {
case 1:
dice1(0);
break;
case 2:
dice2(0,new boolean[7]);
break;
case 3:
dice3(0,1);
break;
case 4:
dice4(0,1);
break;
default:
break;
}
System.out.println("총 경우의 수: "+totalCnt);
}
public static void dice1(int cnt) {
if(cnt==N){
totalCnt++;
System.out.println(Arrays.toString(numbers));
return;
}
for(int i=1;i<=6;i++) {
numbers[cnt]=i;
dice1(cnt+1);
}
}
public static void dice2(int cnt, boolean[] isSelected) {
if(cnt==N) {
totalCnt++;
System.out.println(Arrays.toString(numbers));
return;
}
for(int i=1;i<=6;i++) {
if(isSelected[i]) continue;
numbers[cnt]=i;
isSelected[i]=true;
dice2(cnt+1,isSelected);
isSelected[i]=false;
}
}
public static void dice3(int cnt, int start) {
if(cnt==N) {
totalCnt++;
System.out.println(Arrays.toString(numbers));
return;
}
for(int i=start;i<=6;i++) {
numbers[cnt]=i;
dice3(cnt+1, i);
}
}
public static void dice4(int cnt, int start) {
if(cnt==N) {
totalCnt++;
System.out.println(Arrays.toString(numbers));
return;
}
for(int i=start;i<=6;i++) {
numbers[cnt]=i;
dice4(cnt+1, i+1);
}
}
}
package algorithm_live.day02.pcs;
import java.util.Scanner;
public class SubSetTest {
static int N,input[];
static boolean[] isSelected;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N=sc.nextInt();
input=new int[N];
isSelected=new boolean[N];
for(int i=0;i<N;i++) {
input[i] = sc.nextInt();
}
generateSubset(0);
}
public static void generateSubset(int cnt) {
if(cnt==N) {
for(int i=0;i<N;i++) {
System.out.print((isSelected[i]?input[i]:"X")+" ");
}
System.out.println();
return;
}
isSelected[cnt] =true;
generateSubset(cnt+1);
isSelected[cnt]=false;
generateSubset(cnt+1);
}
}