festival문제 질문이요 ㅠㅠ

  • User Avatar
    ahnteajun

    [[problem:FESTIVAL]]
    ~~~c++
    #include
    #include

    void festival(int **line, int L, int LINENUM);

    int main(){
    int CASE, i, j, k, LINENUM, L;
    int **line;

    scanf("%d",&CASE);
    
    for(i = 0 ; i < CASE ; ++i){
        scanf("%d %d",&LINENUM,&L);
        line = (int**)malloc(sizeof(int*)*LINENUM);
    
        for(j = 0 ; j < LINENUM ; ++j){
            line[j] = (int*)malloc(sizeof(int)*LINENUM);
            scanf("%d",&line[j][j]);
    
            for(k = j-1 ; k >= 0 ; --k){
                line[k][j] = line[k][j-1]+line[j][j];
            }
        }
    
        festival(line,L,LINENUM);
        for(j = 0 ; j < LINENUM ; ++j){
            free(line[j]);
        }
        free(line);
    }
    
    return 0;
    

    }

    void festival(int **line, int L, int LINENUM){
    int i, j;
    float min;
    float temp;

    min = 99999999999;
    
    for(i = 0 ; i <= L ; ++i){
        for(j = L-1+i ; j < LINENUM ; ++j){
            temp = (float)line[i][j]/(j-i+1);
            if(temp < min){
                min = temp;
            }
        }
    }
    
    printf("%.11f\n",min);
    

    }
    ~~~
    다른 예제랑 제가 만들어서 해봤는데, 도저히 틀린곳이 어디인지를 모르겠네요 ㅠㅠ

    다이나믹 프로그래밍으로 풀면 될 것같아서 dp로 돌렸는데, 왜 오답이 나오는지를 모르겠네요 ㅠㅠ

    고수님들 도와주세요....ㅠㅠ


    12년 전
4개의 댓글이 있습니다.
  • User Avatar
    JongMan

    도움말을 참조해서 우선 소스코드 구문강조가 제대로 되도록 고쳐주세요.


    12년 전 link
  • User Avatar
    ahnteajun

    아 고쳤습니다. ㅠㅠ


    12년 전 link
  • User Avatar
    Being

    길이가 j-i+1인 구간인데 왜 i0부터 i <= L 까지만 도나요?


    12년 전 link
  • User Avatar
    ahnteajun

    아 ㅠㅠㅠㅠㅠㅠ
    어차피 L길이부터 검사를 시작할거라고 생각하고 <=L까지라고 했는데.. ㅠㅠ 생각해보니가 배열의 각 ROW에서 모든 경우를 고려하지 않네요.. ㅠㅠ

    <= LINENUM이라고하니까 되네요 ㅠㅠㅠ 감사합니다.
    감사합니다 ㅎㅎㅎ


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