인터뷰 질문 60 : n은 주사위

아이디어 : 동적 프로그래밍의 사용은 모든 하위 문제를 해결하는 하나 다음 중 하나를 작성합니다. 가장 간단한 경우에서 먼저 시작했다 : 주사위의 경우, 두 주사위의 세 ... 등등의 경우 주사위. 손 수 있다면, 충분히 처음 세 경우가 당신이 법을 발견 할 수 있습니다.
그림 삽입 설명 여기
그림 삽입 설명 여기

#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

게시 92 개 원래 기사 · 원 찬양 2 · 조회수 3418

추천

출처blog.csdn.net/zxc120389574/article/details/105050305