不知道哪里错的,30分
查看原帖
不知道哪里错的,30分
1494013
imx2g楼主2025/1/18 17:31
#include<iostream>
using namespace std;
struct node//一个楼层结构体 
{
	int cur;
	int step;
};
//状态 1≤N≤200,1≤A,B≤N
int f=0,r=0,k[1000];//f开头 r结尾 k是对应数字 
int n,a,b;
bool flag[10000];


node q[10000];
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++){
		cin>>k[i];
	}
	node n1;
	n1.cur=a;
	n1.step=0;
	q[r++]=n1;
	
	
	while(f<r){
		n1=q[f++];
		if(n1.cur==b){
			cout<<n1.step<<endl;
			return 0;
		}
		for(int i=-1;i<=1;i+=2){
			node n2=n1;
			n2.cur=n1.cur+i*k[n1.cur];
			n2.step++;
			if(n2.cur>=1&&n2.cur<=n&&flag[n2.cur]==false){
				flag[n2.cur=true];
				q[r++]=n2;
			}
		}
	} 
	cout<<-1<<endl;
	return 0;
}
2025/1/18 17:31
加载中...