求助

wuhongzhen 2020-11-21 10:45:40 2022-04-03 14:52:35 10 返回题目

哈哈哈,小伙子,很有善心 这是你的代码 正确的 拿去吧

#include<bits/stdc++.h>
using namespace std;
typedef struct
{
	int step;
	int floor;
} dt;
queue<dt>lift; 
bool flag[2000],f;
int main()
{
	int n,a,b,k[2000];
	dt s,e;
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	{
		cin>>k[i];
	}
	s.step =0;s.floor =a;
	lift.push(s); 
	while(!lift.empty())
	{
		s=lift.front(); 
		lift.pop() ; 
		if(s.floor ==b)
		{
			cout<<s.step<<endl;
			f=1;
			break;
		}

		if(s.floor +k[s.floor]<=n&&!flag[s.floor+k[s.floor]])
		{
			e.floor =s.floor+k[s.floor];
			e.step =s.step +1;
			flag[e.floor]=1;
			lift.push(e); 
		}
		if(s.floor -k[s.floor]>=1&&!flag[s.floor-k[s.floor]])
		{
			e.floor =s.floor-k[s.floor];
			e.step =s.step +1;
			flag[e.floor]=1;
			lift.push(e); 
		}
	}
	if(f==0)	cout<<"-1"<<endl; 
	return 0;
} 
{{ vote && vote.total.up }}

共 4 条回复

wurenchao

什么长解,看我的:

#include<bits/stdc++.h> using namespace std; int N,A,B,ret=-1,s=0,a[201]; bool f=0,b[201]; void dfs(int t){if(ret!=-1) return ; f(t==B){ret=s; return ;}if(t+a[t]<=N&&b[t+a[t]]==0) ++s,b[t]=1,dfs(t+a[t]),b[t]=0;if(t-a[t]>0&&b[t-a[t]]==0) ++s,b[t]=1,dfs(t-a[t]),b[t]=0;--s; return ;} int main(){cin>>N>>A>>B;for(int i=1;i<=N;++i) cin>>a[i];dfs(A);cout<<ret;return 0;}

wuhongzhen

@061hjl kisama!!!

061hjl

呵呵

wuhongzhen

让我康康有多少小伙子是富有善心的
请扣1