• 跳跃游戏(2015蓝桥杯)


                                           跳跃游戏

                                          Time Limit: 1 Sec  Memory Limit: 128 MB
                                                               [Submit][Status][Discuss]

    Description

    给定一个非负整数数组,假定你的初始位置为数组第一个下标。
    数组中的每个元素代表你在那个位置能够跳跃的最大长度。
    请确认你是否能够跳跃到数组的最后一个下标。
    例如:
    A = [2,3,1,1,4],
    return true.
    A = [3,2,1,0,4],
    return false.

    Input

    第一行输入一个整数n(1<=n<=1000000),下一行输入n个整数a[i](0<=a[i]<=n)

    Output

    若能够跳跃到数组的最后一个下标,请输出“true”(不包含双引号),否则,输出“false”(不包含双引号)。

    思路:既然题目说了数组中元素为非负的,所以只要数组中没有0,就一定可以走到结尾,然后单独判断0就可以了,当遇到0的时候,看0前面的数够不够大,能不能跨过这个0,意思就是0前面第一个数一定要大于等于2,0前面第二个数一定要大于等于3......,依次遍历,如果遍历到了开头还没有找到能跨过这个0的点,就false咯,当数组中的所有0都可以跨过,那么就是true。

    Sample Input

    5
    2 0 2 0 1

    Sample Output

    true
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <cstdlib>
    #include <map>
    using namespace std;
    const int MAXN=1e6+10;
    int a[MAXN];
    int main()
    {
        int n,i,j,k;
        cin>>n;
        for(i=0;i<n;i++)
            cin>>a[i];
        for(i=0;i<n;i++)
        {
            int flag=1;
            if(a[i]==0)
            {
                int e=2;
                for(j=i-1;j>=0;j--)
                {
                   if(a[j]>=e)
                    {flag=1;break;}
                   else
                    e++;
                }
                if(j<0)
                    break;
            }
        }
        if(i>=n)
            cout<<"true"<<endl;
        else
            cout<<"false"<<endl;
     
    }
  • 相关阅读:
    Zabbix二次开发_03api列表
    Zabbix二次开发_02获取数据
    Zabbix二次开发_01基础
    运维监控体系
    并发检测主机ip存活脚本
    Python的paramiko模块ssh操作
    Oracle数据迁移expdp/impdp
    Mongodb的备份与恢复
    利用微信小程序实现web监控界面
    不会JS中的OOP,你也太菜了吧!(第二篇)
  • 原文地址:https://www.cnblogs.com/jk17211764/p/9677364.html
Copyright © 2020-2023  润新知