아이디어 : 동적 프로그래밍의 사용은 모든 하위 문제를 해결하는 하나 다음 중 하나를 작성합니다. 가장 간단한 경우에서 먼저 시작했다 : 주사위의 경우, 두 주사위의 세 ... 등등의 경우 주사위. 손 수 있다면, 충분히 처음 세 경우가 당신이 법을 발견 할 수 있습니다.
#include <iostream>
using namespace std;
int main()
{
#define MAX_SUM 10000
#define MAX_N 10
int n = 3;
int m[MAX_N][MAX_SUM] = {0};
for (int i = 1; i <= 6; i++) {
m[1][i] = 1;
}
for (int i = 2; i <= n; i++) {
for (int j = i, h=i-1; j <= 6*i - 6 + 1; j++, h++) {
for (int k = 0; k < 6; k++) {
m[i][j+k] += m[i-1][h];
}
}
}
// 输出二维数组m
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 6 * n; j++) {
cout << m[i][j] << " " ;
}
cout << endl;
}
cout << endl;
// 输出答案
cout << n << "个骰子时,各种sum出现的次数:" << endl;
for (int i = n; i <= n * 6; i++) {
cout << "SUM=" << i << ", " << "出现次数:" << m[n][i] << endl;
}
return 0;
}
참조 : HTTPS : //www.cnblogs.com/wangkundentisy/p/9378886.html