728x90
import java.util.Arrays;
import java.util.Scanner;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;
public class DiceTest {
static int N,numbers[],totalCnt;
static boolean[] isSelected;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N= sc.nextInt();
int M=sc.nextInt();
numbers = new int[N];
totalCnt = 0;
switch(M)
{
case 1 : // 중복순열
dice1(0);
break;
case 2: //순열
isSelected = new boolean[7];
dice2(0);
break;
case 3: // 중복 조합
dice3(0,1);
break;
case 4: // 조합
dice4(0,1);
break;
}
System.out.println("경우의 수 : "+totalCnt);
}
// 중복 순열
private 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);
}
}
// 순열
private static void dice2(int cnt)
{
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[i]=false;
}
}
// 중복 조합
private 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);
}
}
// 조합
private 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);
}
}
}
728x90
'언어 > JAVA' 카테고리의 다른 글
자바 sort (Compareable, Comparator, lambda) (0) | 2021.08.06 |
---|---|
자바 조합 생성 (0) | 2021.08.03 |
StringBuilder (0) | 2021.08.02 |
BufferedReader (1) | 2021.08.02 |
java input.txt 읽기 (0) | 2021.07.29 |