求大神帮改
查看原帖
求大神帮改
629451
luozichen081115楼主2022/4/18 12:39
#include<bits/stdc++.h>
using namespace std;
int s[202],a,b,n,j[3]={0,1,-1},jg[3],i,jsq;
bool pt[202][3],pjg,bl[202];
void shx(int k1)
{
	cout<<k1<<" ";
	bl[k1]=true;
	if(k1==b)
	{
		pjg=true;
		if(jg[1]==0)
		{
			jg[1]=jg[2];
		}
		if(jg[1]>jg[2])
		{
			jg[1]=jg[2];
		}
		jg[2]=0;
		return;
	}
	if(k1>n||k1<=0)
	{
		return;
	} 
	if(pt[k1][1]==true&&bl[k1+s[k1]]==false)
	{
		jg[2]++;
		shx(k1+s[k1]);
	}
	if(pt[k1][2]==true&&bl[k1-s[k1]]==false)
	{
		jg[2]++;
		shx(k1-s[k1]);
	}
	bl[k1]=false;
}
int main()
{
    memset(pt,true,sizeof(pt));
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int p=1;p<=2;p++)
		{ 
			if(j[p]*s[i]+i>n||j[p]*s[i]+i<=0)
			{
				pt[i][p]=false;
			}
			if(s[i]==0)
			{
				pt[i][1]=false;
				pt[i][2]=false;
			}
		}
	}
	shx(a);
	if(pjg==false)
	{
		cout<<"-1";
	}
	else{
		cout<<jg[1];
	}
}
或
#include<bits/stdc++.h>
using namespace std;
int s[202],a,b,n,j[3]={0,1,-1},jg[3],i,jsq,p[202];
bool pt[202][3],pjg,bl[202][3],h[202];
void shx(int k1)
{
	/*if(h[k1]==false)
	{
		if(bl[k1][1]==true&&bl[k1][2]==true)
	{
		return;
	}*/
	cout<<k1<<" ";
	if(k1==b)
	{
		/*cout<<endl;*/
		pjg=true;
		if(jg[1]==0)
		{
			jg[1]=jg[2];
		}
		if(jg[1]>jg[2])
		{
			jg[1]=jg[2];
		}
		jg[2]=0;
		return;
	}
	if(k1>n||k1<=0)
	{
		return;
	} 	
	/*h[k1]=true;*/
	if(pt[k1][1]==true)
	{
		jg[2]++;
		bl[k1][1]=true;
		p[k1]++;
		if(p[k1]<=5)
		{
			shx(k1+s[k1]);
		}
	}
	if(pt[k1][2]==true)
	{
		jg[2]++;
		bl[k1][2]=true;
		p[k1]++;
		if(p[k1]<=5)
		{
			shx(k1-s[k1]);
		}
	}
}
int main()
{
    memset(pt,true,sizeof(pt));
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int p=1;p<=2;p++)
		{ 
			if(j[p]*s[i]+i>n||j[p]*s[i]+i<=0)
			{
				pt[i][p]=false;
			}
			if(s[i]==0)
			{
				pt[i][1]=false;
				pt[i][2]=false;
			}
		}
	}
	shx(a);
	if(pjg==false)
	{
		cout<<"-1";
	}
	else{
		cout<<jg[1];
	}
}
2022/4/18 12:39
加载中...