zoukankan      html  css  js  c++  java
  • P1713 麦当劳叔叔的难题(90分)

    题目描述

    话说我们铭铭小朋友成功的回答了爸爸的问题,自然少不了要去索要些奖励,抠门的爸爸一看报纸,嘿,门口的麦当劳在搞活动,还有免费午餐哦,不过前提条件:得正确回答麦当劳叔叔的问题。

    问题是这样描述的:

    “我面前有很多个小朋友,我希望你帮我找到一个最聪明的小朋友。我心目中最聪明的就是第一个跑进麦当劳大门的,我希望你帮我找出最聪明和最不聪明的小朋友,可能的最大的到达时间差。但是,小朋友只能按照一个特殊的规则前进。小朋友面前有一个n*n的格子矩阵,左下角的格子是起点,右上角的格子是大门。每个孩子每秒可以走向 上、下、左、右 前进一个格子,每个格子只能经过一次。但矩阵中间有一些障碍区,不能通过,只能绕过。”

    例如,4*4的矩阵,格子(1, 1),(2, 3),(4, 2)为障碍区,黑格子就是一条可行的路线。时间为7。

    输入格式

    第1行为两个整数 n, m (2≤n≤10, 0≤m≤100)。

    第2至第m+1行里,每行描述一个障碍区。用两个整数表示x, y (1≤x, y≤n)。

    输出格式

    仅1行,那个最大的时间差。

    输入输出样例

    输入 #1
    4 3
    1 1
    2 3
    4 2
    
    输出 #1
    4

    玄学超时

    开三个数组,记录当前步数f[][],最小步数d[][]以及最大步数u[][]


    #include <bits/stdc++.h>
    using namespace std;
    int n,m,a[102][102],book[105][105],res=0x7ffffff,res1=-1;
    int dfs(int now , int x , int y){
    if( x > n || y > n || x < 1 || y < 1 || book[x][y] == 1){
    return 0;
    }
    if( x == 1 && y == n ){
    res=min(res,now);
    res1=max(res1,now);
    return 0;
    }
    book[x][y]=1;
    dfs(now+1,x+1,y);dfs(now+1,x-1,y);dfs(now+1,x,y+1);dfs(now+1,x,y-1);
    book[x][y]=0;return 0;
    }
    int main(){
    int x , y ;
    cin>>n>>m;
    for (int i = 1 ; i <= m; i ++)cin>>x>>y,book[x][y]=1;
    dfs(1,n,1);
    cout<<res1-res;
    return 0;
    }

  • 相关阅读:
    hdu Boring counting
    hdu Connections between cities
    hdu Median Filter
    hdu Entropy
    hdu Box Relations
    未能加载数据集 加载DataSet错误
    SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究
    Spread.NET中文开发文档汇总
    ChartDirector资料小结
    AmCharts图表JavaScript Charts参数
  • 原文地址:https://www.cnblogs.com/hrj1/p/11503862.html
Copyright © 2011-2022 走看看