社区讨论

DFS MLE8个点,求教如何剪枝

P1135奇怪的电梯参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi7xysow
此快照首次捕获于
2025/11/21 05:26
4 个月前
此快照最后确认于
2025/11/21 05:26
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int a[210];
int n,x,x1,y,temp,ans=102400;
 void dfs(int x)//所在层数 
{
	if(x>n||x<=0) return;//越界 
	cout<<x<<endl;
	if(x!=x1) temp++;
	if(x==y) //如果到达了 
	{
		ans=min(ans,temp);
		return ;
	}
	dfs(x+a[x]);//上 
	dfs(x-a[x]);//下 
}
int main()
{
	 cin>>n>>x1>>y;
	 for(int i=1;i<=n;i++)
	 cin>>a[i];
	 dfs(x1);
	 cout<<ans;
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...