FESTIVAL 재귀적접근

  • psh4253
    psh4253

    이 문제를 재귀를 이용해서푸는데 제가 빼먹은 부분을 도무지 찾을 수 없어 질문드리게되었습니다

    기본적인 흐름은 i일 시작을 기점으로 마지막일까지 하루씩 더해가며 평균을 구하는 방법을 생각했습니다.

    로직의 이상이 있는건지 아니면 사소한 문제인지 그 점을 알고싶은데 도움 부탁드리겠습니다.

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int t;
    int c[1001];
    int n, l;
    double result;
    void go(int start, double cost, double days, int max)
    {
        if (start + l - 1 > n) return; // 기준일 +L일이 표를 벗어나면
        if (days >= l) // 입력된 L일 이상 진행해야하기때문에
        {
            double tmp = cost / days;
            result = min(tmp, result);
        }
        go(start + 1, cost + c[start + 1], days + 1, max);
    }
    int main(void)
    {
        scanf("%d", &t);
        while (t--)
        {
            result = 999;
            for (int i = 0; i <= 1000; i++)
            {
                c[i] = 0; // 매 데이터 초기화
            }
            scanf("%d %d", &n, &l);
            for (int i = 1; i <= n; i++)
            {
                scanf("%d", &c[i]);
            }
            for (int i = 1; i <= n; i++)
            {
                go(i, c[i], 1, n);
            }
            printf("%.12lf\n", result);
        }
    }
    

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