9도 OJ 1255: 주사위 포인트 확률(귀속, DP)
메모리 제한: 32메가
특수 판제:아니오
제출: 316
해결
제목 설명:
n개의 주사위를 바닥에 던지면 모든 주사위가 위로 향하는 점의 합은 S이다.n 을 입력하여 S의 가능한 모든 값이 나타날 확률을 인쇄합니다.
입력:
입력은 N 주사위가 있음을 나타내는 정수 N(1<=N<=1000)을 포함합니다.
출력:
여러 개의 테스트 데이터가 있을 수 있으며, 각 그룹의 데이터에 대해 Sample Output의 형식에 따라 나타날 수 있는 모든 데이터와 S의 확률을 출력할 수 있다.
샘플 입력:
1
2
샘플 출력:
1: 0.167
2: 0.167
3: 0.167
4: 0.167
5: 0.167
6: 0.167
2: 0.028
3: 0.056
4: 0.083
5: 0.111
6: 0.139
7: 0.167
8: 0.139
9: 0.111
10: 0.083
11: 0.056
12: 0.028
아이디어:
표준적인 동적 기획 문제는 이전 단계의 상태에 따라 다음 단계를 내놓는다.
또한 이 문제의 판정 데이터는 잘못된 것이어야 한다. 예를 들어 다른 사람이 AC할 수 있는 프로그램이 4를 입력한 결과는 다음과 같다.
4: 0.002 5: 0.005 6: 0.009 7: 0.017 8: 0.028 9: 0.043 10: 0.062 11: 0.080 12: 0.096 13: 0.108 14: 0.113 15: 0.108 16: 0.096 17: 0.080 18: 0.062 19: 0.043 20: 0.027 21: 0.015 22: 0.008 23: 0.003 24: 0.001
4와 24가 대응하는 확률이 다르다는 것은 분명히 잘못된 것이다.
다음은 AC가 가능한 코드와 나의 코드를 각각 보여 준다.
코드 1(AC 가능한 코드):
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int n,i,j,k;
double a[2][6005],all;
while(scanf("%d",&n)!=EOF)
{
memset(a,0,sizeof(a));
a[1][1]=1;
a[1][2]=1;
a[1][3]=1;
a[1][4]=1;
a[1][5]=1;
a[1][6]=1;
for(i=2;i<=n;i++)
{
for(j=i*6;j>=i;j--)
{
a[i%2][j]=0;
if(j-1>0)
a[i%2][j]+=a[(i+1)%2][j-1];
if(j-2>0)
a[i%2][j]+=a[(i+1)%2][j-2];
if(j-3>0)
a[i%2][j]+=a[(i+1)%2][j-3];
if(j-4>0)
a[i%2][j]+=a[(i+1)%2][j-4];
if(j-5>0)
a[i%2][j]+=a[(i+1)%2][j-5];
if(j-6>0)
a[i%2][j]+=a[(i+1)%2][j-6];
}
}
all=pow(6.0,n);
for(i=n;i<=n*6;i++)
printf("%d: %.3lf
",i,a[n%2][i]/all);
printf("
");
}
return 0;
}
코드 2(내 코드):
#include <stdio.h>
#define N 1000
int main(void)
{
int n, i, j, k;
double a[2][N*6];
while (scanf("%d", &n) != EOF)
{
a[0][0] = 1;
for(i=1; i<=n; i++)
{
for (j=i; j<=i*6; j++)
{
a[i&1][j] = 0;
for (k=j-1; k>=j-6; k--)
{
if (k>=i-1 && k<=(i-1)*6)
a[i&1][j] += a[(i-1)&1][k]/6;
}
if (i == n)
printf("%d: %.3lf
", j, a[i&1][j]);
}
}
printf("
");
}
return 0;
}
/**************************************************************
Problem: 1255
User: liangrx06
Language: C
Result: Wrong Answer
****************************************************************/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【경쟁 프로 전형적인 90문】008의 해설(python)의 해설 기사입니다. 해설의 이미지를 봐도 모르는 (이해력이 부족한) 것이 많이 있었으므로, 나중에 다시 풀었을 때에 확인할 수 있도록 정리했습니다. ※순차적으로, 모든 문제의 해설 기사를 들어갈 예정입니다. 문자열...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.