1 条题解

  • 0
    @ 2024-8-15 16:44:15

    青蛙的最优策略是每次都跳到能跳到的最右位置,可以用dfs,每次从大到小枚举,找到第一个能跳到的位置,对那个位置递归调用即可。

    核心代码
    
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int NR = 1005;
    char s[NR];
    int n, d, ans = 1e9;
    //pos表示当前位置,step表示到目前为止跳了多少步 
    void dfs(int pos, int step)
    {
        if(pos + d >= n)                 //能跳到终点
        {
            ans = min(ans, step + 1);    //更新答案
            return;                        //返回上一步
        }
        for(int i = d; i >= 1; i --)    //从大到小枚举
            if(s[pos + i] == '1')    
            {
                dfs(pos + i, step + 1); //下一步搜索
                break;
            }                            
    

    }

    </p>
    • 1

    信息

    ID
    908
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    33
    已通过
    7
    上传者