WA求助
查看原帖
WA求助
1438864
tuboshu666楼主2024/10/4 18:47

下载了第一个数据,运行结果比要求大1

#include <iostream>
using namespace std;

int n,a,b,floor;
int k[210];
bool st[210]; //记录是否到达过某层 
int minn = 999999;

void dfs(int x) 
{
	if (x > 1000 || x > minn)
	{
		return;
	}
	
	if (floor == b)
	{
		minn = min(minn,x);
		return;
	}
	
	int temp = floor;
	floor += k[floor];
	if (floor <= n && st[floor] == false)
	{
		st[floor] = true;
		dfs(x+1);
		st[floor] = false;
	}
	
	floor = temp;
	floor -= k[floor];
	if (floor >= 1 && st[floor] == false)
	{
		st[floor] = true;
		dfs(x+1);
		st[floor] = false;
	}
}

int main()
{
	cin >> n >> a >> b;
	floor = a;
	st[a] = true;
	for (int i = 1 ; i <= n ; i++)
	{
		cin >> k[i];
	}
	dfs(0);
	if (minn == 999999)
	{
		cout << -1 << endl;
	}
	else
	{
		cout << minn << endl;
	}
}

想了一个下午一直搞不明白

2024/10/4 18:47
加载中...