festival문제 질문이요 ㅠㅠ

  • ahnteajun
    ahnteajun

    FESTIVAL

    #include<stdlib.h>
    #include<stdio.h>
    
    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로 돌렸는데, 왜 오답이 나오는지를 모르겠네요 ㅠㅠ

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


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

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


    10년 전 link
  • ahnteajun
    ahnteajun

    아 고쳤습니다. ㅠㅠ


    10년 전 link
  • Being
    Being

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


    10년 전 link
  • ahnteajun
    ahnteajun

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

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


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