3 条题解
-
0
DFS
最少次数,每次都要更新p数组,初始为正无穷
#include <iostream> #include <cstring> using namespace std; const int N = 210; int n, a, b; int d[N]; int p[N]; int flag; void dfs(int u, int level) { p[level] = u; if (level == b) { flag = true; return; } if (level + d[level] <= n && u + 1 < p[level + d[level]]) dfs(u + 1, level + d[level]); if (level - d[level] >= 1 && u + 1 < p[level - d[level]]) dfs(u + 1, level - d[level]); } void solve() { memset(p, 0x3f, sizeof p); cin >> n >> a >> b; for (int i = 1; i <= n; i++) cin >> d[i]; dfs(0, a); if (flag) cout << p[b] << endl; else cout << -1 << endl; } int main() { solve(); system("pause"); return 0; }
信息
- ID
- 85
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 376
- 已通过
- 93
- 上传者