广搜失败求调
查看原帖
广搜失败求调
1259912
zhangfengyao楼主2024/9/15 22:17
#include<iostream>
#include<queue>
using namespace std;
int k[205];
struct move
{
	int x;
	int step;	
};
int a,b,n;
bool vis[205];
bool judgment(int i)
{
	if(i>=0&&i<=n&&vis[i]!=true)
	{
		return true;
	}
	return false; 
}
void bfs()
{
	queue <move> q;
	move item;
	item.x=a;
	item.step=0;
	q.push(item);
	vis[a]=true;
	while(q.empty()==false)
	{		
		move head=q.front();
		q.pop();
		if(head.x==b)
		{
			cout<<head.step<<endl;
			return;
		}
		if(judgment(head.x+k[head.x]))
		{
			item.x=head.x+k[head.x];
			item.step=head.step+1;
			q.push(item);
			vis[item.x]=true;
		}
		if(judgment(head.x-k[head.x]))
		{
			item.x=head.x-k[head.x];
			item.step=head.step+1;
			q.push(item);
			vis[item.x]=true;
		}
	}
	cout<<"-1"<<endl;
}
int main()
{
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	{
		cin>>k[i];
	}
	if(a==b)
	{
		cout<<"0"<<endl;
		return 0;
	}
	bfs();
	return 0;
}
2024/9/15 22:17
加载中...