dfs超时了,64分,找不到超时的原因,求救
  • 板块学术版
  • 楼主LiZiqing
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/1/21 21:59
  • 上次更新2024/1/22 10:21:43
查看原帖
dfs超时了,64分,找不到超时的原因,求救
1142377
LiZiqing楼主2024/1/21 21:59
#include <iostream>
#include <climits>
using namespace std;
int moves[205];
int vis[205];
int N, A, B;
long long res = 500;
void dfs(int x,long long time)
{
	if (x != B and moves[x] == 0)
	{
		return;
	}
	if (x > N or x < 1)
	{
		return;
	}
	if (vis[x])
	{
		return;
	}
	if (x == B)
	{
		res = min(res, time);
		return;
	}
	if (time >= res)
	{
		return;
	}
	vis[x] = 1;
	dfs(x + moves[x], time + 1);
	dfs(x - moves[x], time + 1);
	vis[x] = 0;
}
int main()
{
	cin >> N >> A >> B;
	for (int i = 1; i <= N; i++)
	{
		cin >> moves[i];
	}
	dfs(A, 0);
	if (res == 500)
	{
		cout << -1 << endl;
		return 0;
	}
	cout << res << endl;
	return 0;
}
2024/1/21 21:59
加载中...