HDOJnbsp;nbsp;1010nbsp;nbsp;nbsp;Tempternbsp;ofnbsp;thenbsp;Bone

2024-02-09 07:48

本文主要是介绍HDOJnbsp;nbsp;1010nbsp;nbsp;nbsp;Tempternbsp;ofnbsp;thenbsp;Bone,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1010

#include <stdio.h>
#include <math.h>
char  map[10][10];   //记住数组不能为7
int n,m,t;     
int  di,dj;     //门的位置
bool escape;     //判断是否成功的标志
int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};       //表示上下左右四个方向
void dfs(int si,int sj,int cut)
{
    int i,temp;
    if(si>n||sj>m||si<=0||sj<=0)
        return;
    if(si==di&&sj==dj&&cut==t)
    {
        escape=1;
        return;
    }
    temp=(t-cut)-fabs(si-di)-fabs(sj-dj);  //进行剪枝
    if(temp<0||temp%2)
        return ;
    for(i=0;i<4;i++)
    {
        if(map[si+dir[i][0]][sj+dir[i][1]]!='X')
        {
            map[si+dir[i][0]][sj+dir[i][1]]='X';
            dfs(si+dir[i][0],sj+dir[i][1],cut+1);
            if(escape)
                return;
            map[si+dir[i][0]][sj+dir[i][1]]='.';
        }
    }
    return;
}
int main()
{
  int i,j;
  int si,sj;
  char p;
  while(1)
  {
      scanf("%d%d%d",&n,&m,&t);
      if(!n&&!m&&!t)
        break;
      int wall=0;
      p=getchar();
      for(i=1;i<=n;i++)
      {
         for(j=1;j<=m;j++)
         {
            scanf("%c",&map[i][j]);
            if(map[i][j]=='S')
                si=i,sj=j;
            else if(map[i][j]=='D')
                di=i,dj=j;
            else if(map[i][j]=='X')
                wall++;
          }
          p=getchar();

      }
      if(n*m-wall<=t)   //进行剪枝
       {
           printf("NO\n");
           continue;
       }
       escape=0;
       map[si][sj]='X';
       dfs(si,sj,0);
       if(escape)
          printf("YES\n");
       else
          printf("NO\n");
  }
  return 0;
}

这篇关于HDOJnbsp;nbsp;1010nbsp;nbsp;nbsp;Tempternbsp;ofnbsp;thenbsp;Bone的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/693601

相关文章

libsvmnbsp;核函数nbsp;交…

原文地址:libsvm 核函数 交叉验证 参数优化 作者:千千阙歌112 转载http://blog.csdn.net/chlele0105/article/details/17026963 1.下载及安装 libsvm3.1下载:http://download.csdn.net/detail/chlele0105/6631687 里面包含了libsvm和参数寻优算法,GA,G

今天与明天nbsp;nbsp;--信息与计算科…

信计啊 原文地址:今天与明天  --信息与计算科学专业调研报告 作者:小豆豆 摘要:信息与计算科学专业学生毕业的就业利弊,一些关于本专业所需要掌握的专业知识,以及在学习过程中需要重点掌握的知识和需要自己自学的知识的概括,就业面试中需要注意的事项,和找工作过程中需要注意的一些问题的简单看法。详细说明了一些关于我们信息与计算科学专业今后在办学上可以考虑的建设意见。    “不要担心,我们专

C++nbsp;多态

第八章  多态性 注:参考东南大学《C++程序设计教程》视频,主讲老师:何洁月。此内容为自学时所记笔记 多态性:指发出同样的消息被不同类型的对象接受时导致完全不同的行为。 消息:主要指对类的成员函数的调用 实现:函数重载------静态       运算符重载----静  ---编译时       虚函数--------动态---运行时 联编:计算机程序自身彼此关联的过程 运算符重载:对已

C++nbsp;继承

注:参考东南大学《C++程序设计教程》视频,主讲老师:何洁月。此内容为自学时所记笔记 第七章   类的继承与派生 继承:保持已有类的特性而构成新类的过程  目的:实现代码重用 派生:在已有类的基础上新增自己的特性而产生新类的过程  目的:原程序进行改造吗       (1)吸收基类 。(2)改造 同名覆盖。(3)新增加。 基类--->派生类 公有继承:class B{};

C++nbsp;STLnbsp;nbsp;速成

STL 之模板 可以将两个函数合并 定义函数模板: 程序一 程序二     STL概述:    容器:可容纳各种数据类型的数据结构          vector  list  deque  set  map  stack  queue       共有的成员函数  empty( )   size( )  begin( )  end( )    rbegin( )

JAVA中Action层,nbsp;Service层amp;n…

modle层就是对应的数据库表的实体类。Dao层是使用了Mybatis连接数据库、操作数据库(增删改查)。Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断)。Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。以上的Mybatis,Struts,都需要注入到

Javanbsp;接口

Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 接口的两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。 问题的出现:Java是一种单继承的语言

Springnbsp;nbsp;IOC/DI

IOC(控制反转:Inverse of Control)是Spring的内核,AOP,声明式事务等功能都建立在该功能之上,它涉及到代码解耦,设计模式,代码优化等问题的考虑。 控制反转即是某一接口的具体实现类的选择控制权从调用类中移除,转交给第三方裁决。 依赖注入DI(Dependency Injection): 将调用类对接口的实现类的依赖关系由第三方注入,以移除调用类对接口实现类的依赖 属性注

Javanbsp;nbsp;中的反射机制

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 Java反射机制主要提供了以下功能:       在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象

hdu1010_tempter_of_the_Bone(dfs减枝)

题目大意:在一个矩阵之中从S到D在规定的时间到达,不能走回头路。题目的连接hdu1010 解题思路:因为到达的时间是固定的,因此使用广度优先遍历是不行的,广度优先遍历只能找到由S到达D的最小时间而不能找到规定的时间。因此要使用深度优先遍历,而深度优先遍历要注意减枝来提高最终的效率。 设当前的坐标为i,j。那么由当前位置到终点 (ex,ey)的最短距离为以两个点为对角线的矩形的长和宽之和减2,或