社区讨论

求助p1135

灌水区参与者 3已保存回复 5

讨论操作

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

当前回复
5 条
当前快照
1 份
快照标识符
@mi7yo1o4
此快照首次捕获于
2025/11/21 05:46
4 个月前
此快照最后确认于
2025/11/21 05:46
4 个月前
查看原帖
CPP
#include<cstdio>
#include<cmath>
using namespace std;
int N , A , B;
int que[201];
int lift[201];
int head,tail;
int ans[201];
bool check[201];
int main(){
    scanf("%d%d%d",&N,&A,&B);
	for(int i=0;i<N;i++){scanf("%d",&lift[i]);}
	if(A==B){
		printf("0");
		return 0;
	}
	que[0]=A;
	while(head<=tail){
		for(int i=1;i<=2;i++){
			int now=que[head]+int(pow(-1,i))*lift[head+1];
			if(now<=0||now>N||check[now]){continue;}
			check[now]=1;
			ans[now]=ans[que[head]]+1;
			if(now==B){
				printf("%d",ans[now]);
				return 0;
			}
			tail++;
			que[tail]=now;
			
		}
		head++;
	}
	printf("-1");
	return 0;	
	
}

回复

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

正在加载回复...