-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRollDice2.cpp
64 lines (57 loc) · 1.19 KB
/
RollDice2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "RollDice2.h"
/// <summary>
/// 문제
/// 자연수 N과 M을 입력 받아서 주사위를 N번 던져서 나온 눈의 합이 M이 나올 수 있는 모든 경우를 출력하는
/// 프로그램을 작성하시오.
///
/// 입력 형식
/// 첫 줄에 주사위를 던진 횟수 N(2≤N≤7)과 눈의 합 M(1≤M≤40)이 들어온다.
///
/// 출력 형식
/// 주사위를 던진 횟수의 합이 M이 되는 경우를 모두 출력한다.
/// 작은 숫자 부터 출력한다.
///
/// 입력 예
/// 3 10
///
/// 출력 예
/// 1 3 6
/// 1 4 5
/// 1 5 4
/// 1 6 3
/// 2 2 6
/// 2 3 5
/// …
/// 6 2 2
/// 6 3 1
///
/// http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=458&sca=2080
/// </summary>
void RollDice2::Code()
{
int n, m;
std::cin >> n >> m;
int* arr = new int[n];
AllNumbersSameTotal(arr, n, m);
delete[] arr;
}
void RollDice2::AllNumbersSameTotal(int arr[], int n, int m, int depth, int total)
{
if (depth == n)
{
if (total == m)
{
for (int i = 0; i < n; i++)
{
std::cout << arr[i] << ' ';
}
std::cout << '\n';
}
return;
}
for (int i = 1; i <= 6; i++)
{
arr[depth] = i;
AllNumbersSameTotal(arr, n, m, depth + 1, total + i);
}
}