NUMB3RS 질문드립니다

  • kws4679
    kws4679

    안녕하세요 두니발 박사의 탈옥

    http://algospot.com/judge/problem/read/NUMB3RS

    을 풀고있습니다. 특별한건 없고 책과 동일하게 풀었구요

    그런데 자꾸 테스트를 통과하지 못해서 질문드립니다

    답안 제출형식이 달라서 그런건지... 도움 부탁드릴께요~

    아래 소스코드 첨부하겠습니다.

    아참 그리고 책 p276에서 중간부분에

    "이때 박사가 전날 there에 있다가 오늘 here로 올 확률은

    search3(here,days-1)에 ~" 부분에서

    search3(there,days-1) 이 아닌지 싶습니다!!

    int town[51][51];
    int q[51],ways[51];
    int n,d,p;
    double cache[51][101];
    double numbers(int townNumber, int days){
    if(!days) return (townNumber==p?1.0:0.0);
    double& ret=cache[townNumber][days];
    if(ret != 2) return ret;
    ret = 0;
    for(int j=0;j<n;j++)
    if(town[townNumber][j]) ret += numbers(j,days-1)/ways[j];
    return ret;
    }

    int main(){
    int c;
    scanf("%d", &c);
    while(c--){
    memset(town, false, sizeof(town));
    memset(ways, 0, sizeof(ways));
    scanf("%d %d %d", &n, &d, &p);
    for(int i=0;i<n;i++){
    for(int j=0;j<n;j++) {
    cache[i][j] = 2;
    scanf("%d", &town[i][j]);
    if(town[i][j]) ways[i] +=1;
    }
    }
    int t;
    scanf("%d", &t);
    for(int i=0;i<t;i++) scanf("%d", &q[i]);
    for(int i=0;i<t;i++) {
    if(i==t-1) printf("%.10lf", numbers(q[i],d));
    else printf("%.10lf ", numbers(q[i],d));
    }
    }
    return 0;
    }


    10년 전
2개의 댓글이 있습니다.
  • JongMan
    JongMan

    이걸 고치고 제출해본 것은 아닙니다만, cache[][] 배열의 크기는 50x100인데 n < d일 때 일부만 초기화되고 있는 것은 아닌지요.


    10년 전 link
  • kws4679
    kws4679

    오 감사합니다 수정하니 테스트를 통과하였습니다.


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.