怎么优化?
查看原帖
怎么优化?
1011137
封禁用户楼主2024/1/12 21:10

代码:

#include<bits/stdc++.h>
using namespace std;

int n, a, b;
int k[201], d[201], f[201];
bool c[201];
int ma = 2147483647;

inline void dfs(int p, int ans) {
	if (p == b) {
		ma = min(ma, ans);
		return;
	}
	if (!k[p])
		return;
	if (ans > INT_MAX)
		return;
	if (p - k[p] >= 1 && !c[p - k[p]]) {
		c[p] = true;
		dfs(p - k[p], ans + 1);
		c[p] = false;
	}
	if (p + k[p] <= n && !c[p + k[p]]) {
		c[p] = true;
		dfs(p + k[p], ans + 1);
		c[p] = false;
	}
}

int main() {
	scanf("%d%d%d", &n, &a, &b);
	for (int i = 1; i <= n; i++)
		scanf("%d", &k[i]);
	dfs(a, 0);
	if (ma == 2147483647)
		printf("-1");
	else
		printf("%d", ma);
}
2024/1/12 21:10
加载中...