本文主要是介绍奇怪的电梯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
思路:
见代码注释
AC代码:
#include <bits/stdc++.h>
using namespace std;
int n, A, B;
int t[250]; //记录到达每层所用的最短时间
int a[250];
void dfs(int lou, int sum) {//lou是当前的楼层数,sum为当前按键次数t[lou] = sum; //先进行赋值//下if (lou - a[lou] > 0 && sum + 1 < t[lou-a[lou]]) {dfs(lou - a[lou], sum + 1);}//上if (n >= a[lou] + lou && sum + 1 < t[lou+a[lou]]) {dfs(lou + a[lou], sum + 1);}
}
int main() {std::ios::sync_with_stdio(false); //减少cin和cout的用时memset(t, 0x7f7f7f7f, sizeof(t));//0x7f7f7f7f为int型最大值cin >> n >> A >> B;for (int i = 1; i <= n; i++) {cin >> a[i];}dfs(A, 0);//若t[B]的值没有改变即从未到达B楼层if (t[B] == 0x7f7f7f7f) {cout << -1;return 0;}cout << t[B];return 0;
}
这篇关于奇怪的电梯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!