60分 大佬可以帮我看看吗
查看原帖
60分 大佬可以帮我看看吗
323787
RichardM楼主2020/7/7 13:13
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<queue>
using namespace std;
int every[210] = { 0 };
queue<pair<int, int> > q;

int visit[210] = { 0 };
int main()
{
	int now = 0;
	int step = 0;
	int totalstorey;
	scanf("%d", &totalstorey);
	int beginstorey = 0, endstorey = 0;
	scanf("%d %d", &beginstorey, &endstorey);
	for (int i = 1; i <=totalstorey; i++)
	{
		scanf("%d", &every[i]);

	}
	q.push(make_pair(beginstorey, step));

	
	while (q.size())
	{
		now = q.front().first;
		step = q.front().second;
		
		q.pop();
		/*printf("%d", q.front().first);
		printf("\n");*/
		if (q.front().first==endstorey)
		{
			
			break;

		}

		if (now+every[now]<=totalstorey&& !visit[now + every[now]])
		{
			q.push(make_pair(now + every[now], step + 1));
			visit[now + every[now]] = 1;
		}
		if (now-every[now]>=1&& !visit[now - every[now]])
		{
			q.push(make_pair(now - every[now], step + 1));
			visit[now - every[now]] = 1;
		}
		

	}  
	if (q.front().first==endstorey)
	{
		printf("%d", q.front().second);

	}
	else
	{
		printf("-1");
	}





}
2020/7/7 13:13
加载中...