给定⼀个正整数数组,设为 nums ,最⼤为100个成员,求从第⼀个成员开始,正好⾛到数组 最后⼀个成员,所使⽤的最少步骤数。 要求: 1、第⼀步必须从第⼀元素开始,且:
1、<=第⼀步的步⻓长 <= len/2 ;( len 为数组的⻓长度,需 要⾃⾏解析)。
2、从第⼆步开始,只能以所在成员的数字⾛相应的步数,不能多也不能少,如果⽬标不可达 返回-1,只输出最少的步骤数量。
3、只能向数组的尾部⾛,不能往回⾛。
由正整数组成的数组,以空格分隔,数组⻓长度⼩于100,请⾃⾏解析数据数量。
正整数,表示最少的步数,如果不存在输出-1。
输⼊:
7 5 9 4 2 6 8 3 5 4 3 9
输出:
2
#include <iostream>
#include <bits/stdc++.h>
using namespace std;int main()
{vector<int> v;int k;while(cin>>k){v.push_back(k);}int len = v.size();//总路程len,走len-1步刚好到达终点int res = 101;bool find = false;for(int i=1; i<=len/2; ++i){int steps = 1;int cur = i;//第一步while(cur<len-1){//printf("cur=%dn",cur);cur += v[cur];++steps;}if(cur==len-1){find = true;res = min(steps,res);}}if(find)cout <<res;elsecout <<"-1";return 0;
}
本文发布于:2024-01-28 16:32:08,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064307328750.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |