1 条题解
-
0
青蛙的最优策略是每次都跳到能跳到的最右位置,可以用dfs,每次从大到小枚举,找到第一个能跳到的位置,对那个位置递归调用即可。
核心代码
</p>#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; }
}
- 1
信息
- ID
- 908
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 33
- 已通过
- 7
- 上传者