社区讨论

52分求调,错的全是TLE

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

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@m09obt91
此快照首次捕获于
2024/08/25 22:37
去年
此快照最后确认于
2025/11/04 22:26
4 个月前
查看原帖
不知道为啥,错的测试点全部用时超过1秒,对的测试点全部用时不到五毫秒,是不是死循环
CPP
#include<iostream>
using namespace std;
int c[201],b,min1=1000,lou[201],a,n;
void dfs(int dc,int cs){
	if(b==dc){//判断是否到达 
		if(cs<min1){
			min1=cs;
		}
		return;
	}
	if(lou[dc]==1)//如果已经搜查过就不用再去了,以免造成超时 
		return;
	if(dc-c[dc]>0){//检查合法性,避免数组越界 
		lou[dc]=1;
		dfs(dc-c[dc],cs+1);
		lou[dc]=0;
	}
	if(dc+c[dc]<=n){//同理 
		lou[dc]=1;
		dfs(dc+c[dc],cs+1);
		lou[dc]=0;
	}
	return;
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++){
		cin>>c[i];
	}
	dfs(a,0);
	if(min1==1000)
		cout<<-1;
	else
		cout<<min1;
}

回复

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

正在加载回复...