zoukankan      html  css  js  c++  java
  • P1135 奇怪的电梯

    这题懂了之后就很简单了,感觉和一维的迷宫差不多

    先看样例吧

    5 1 5

    3 3 1 2 5

    要从一楼上到五楼

    一楼是直接上(下)三层,因为没有-2楼,所以上到4楼

    再从四楼下到二楼

    最后从二楼上到五楼

    一共用了三步

    上代码吧:

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int n,a,b,ans=9999999;
    int o[205];
    int book[205];
    void dfs(int x,int sum)
    {
        if(x==b) 
        {
            ans=min(ans,sum);//找出最小的步数
        }
        if(sum>ans) 
        {
            return;//如果比以前多,就返回上一步
        }
        book[x]=1;
        if(x+o[x]<=n&&book[x+o[x]]!=1)//判断是否越界和以前是否走过
        {
            dfs(x+o[x],sum+1);//上楼,步数+1
        }
        if(x-o[x]>=1&&book[x-o[x]]!=1)
        {
            dfs(x-o[x],sum+1);//下楼,步数+1
        }
        book[x]=0;
    }
    int main()
    {
        cin>>n>>a>>b;
        for(int i=1;i<=n;i++)
        {
            cin>>o[i];
        }
        book[a]=1;//不可以走回起点
        dfs(a,0);
        if(ans!=9999999)
        {
            cout<<ans<<endl;
        }
        else//如果没有方法,输出-1
        {
            cout<<"-1"<<endl;
        }
        return 0;
    }

    就这样愉快的AC了(*^_^*)

  • 相关阅读:
    关于Service所需要知道的大部分...
    GCN
    static变量(函数)和普通变量(函数)的区别
    FastGCN论文总结及实现(Tensorflow2.0)
    求相关系数矩阵
    K-means之亚洲杯
    归一化
    多指标综合评价方法汇总
    数据挖掘
    mat函数
  • 原文地址:https://www.cnblogs.com/zjylzf/p/12896404.html
Copyright © 2011-2022 走看看