leetcode 검 은 offer 면접 문제 60. n 주사위 의 포 인 트 를 가리킨다.
1:
: 1
: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]
2:
: 2
: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111,0.08333,0.05556,0.02778]
제한: 1 < = n < = 11
문제 풀이 방향: 1. 확률 이 있 을 수 있 습 니 다 = 값 이 나타 난 횟수 / 총 횟수;총 횟수 = pow (6, n) 2. 2 차원 배열 dp [i] [j] 를 신청 하면 i 개의 주사위 가 j 가 나타 날 만 한 횟수 상태 로 방정식 을 이전 할 수 있다 는 뜻 이다. 모두 n 개의 주사위, 마지막 주사 위 를 던 진 후에 dp [n] [j] 로 n 개의 주사위 가 j 를 던 진 횟수 를 나타 내 면 n - 1 개의 주사위 가 던 진 후에 해당 하 는 포 인 트 는 j - 1, j - 2, j - 3... j - 6 이 라 고 할 수 있다.있다:
for (i = 1; i <= 6; i++){
dp[n][j] += dp[n - 1][j - i];
}
3. 주의해 야 할 것 은 주사위 가 하나 더 많 을 때마다 하나의 값 이 나타 나 지 않 는 다 는 것 이다. 예 를 들 어 두 개의 주사위 와 1 이 나타 나 지 않 는 다 는 것 이다. 적어도 2 이다.
코드 구현:
double* twoSum(int n, int* returnSize){
int i, j, k;
int len = 5 * n + 1;
* returnSize = len;
double* res = (double*)malloc(sizeof(double) * len);
int dp[12][67] = {
0}; // n j
for (i = 1; i <= 6; i++){
//
dp[1][i] = 1;
}
for (i = 2; i <= n; i++){
// 2
for (j = i; j <= 6 * i; j++){
//
for (k = 1; k <= 6; k++){
// n 6
if (j - k <= 0){
break;
}
// n k , n-1
dp[i][j] += dp[i - 1][j - k];
}
}
}
int all = pow(6, n);
for (i = 0; i < len; i++){
res[i] = dp[n][n + i] * 1.0 / all;
}
return res;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.