[华为OD]最小步数找终点,逻辑简单,送分题
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<int> nums;
int num;
while(cin>>num)
{
nums.emplace_back(num);
}
int minStep=INT_MAX;
//i表示第一步的步长
for(int i=0;i<nums.size()/2;i++)
{
int j=i+nums[i];//i表示第一步的步长,nums[i],表示第二步步长
int step=2;//此时已经跳了两步
//没有跳到最后一步就继续跳
while(j<nums.size()-1)
{
j+=nums[j];
step++;
}
if(j==nums.size()-1)//若刚好可以跳到最后一个位置,则保留到终点的最小步数
{minStep=min(minStep,step);}
}
cout<<(minStep==INT_MAX?-1:minStep)<<endl;
}
原文地址:https://blog.csdn.net/m0_57195330/article/details/145267094
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!