P1135 70分WA 求大佬帮忙
查看原帖
P1135 70分WA 求大佬帮忙
494192
ChickenDrinkingMilk楼主2021/8/7 16:53

这哪里错了啊??

#include<bits/stdc++.h>
using namespace std;
int x[201];
bool f[100000];
int main(){
	int n,a,b,i,k,sum=0;
	cin>>n>>a>>b;
	for (i=1;i<=n;i++) cin>>x[i];
	k=a;
	f[k]=1;
	while (k!=b){
		if (k+x[k]<1||k+x[k]>n||f[k+x[k]]==1||sum==n){
			cout<<"-1";
			return 0;
		}
		else {
			k+=x[k];
			f[k]=1;
		}
		sum++;
	}
	cout<<sum;
}

就是用一个while 思路如果当前楼层=b了就输出sum 设一个数组f,如果到达过这一层了就置为一 为了后面判断如果当前楼层+k[i]>n或<1或者是当前楼层已经走过了,陷入了死循环那么就停止,输出-1

2021/8/7 16:53
加载中...