[华为OD]最小步数找终点,逻辑简朴,送分题

打印 上一主题 下一主题

主题 970|帖子 970|积分 2910

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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表示第一步的步长,nums,表示第二步步长
        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;
}
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表