这是一道略复杂的常规BFS题,但我想用DFS来解决,结果写出代码却总是主函数异常返回,不知哪里错了,检查半天也没发现,以后再看看吧。

Code

#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<algorithm>
#include<cstdlib>
#include<cmath> using namespace std; struct stone{int T,X,Y;};
bool cmp(stone S1,stone S2){return S1.T<S2.T;}
int M,b[305][305],m[305][305],Tmin[90005],p,tmin=99999999,obx,oby;
stone S[50005]; void dfs(int t,int no,int x,int y)
{
if(t>Tmin[p]||m[x][y]==0||x>300||y>300||t>90000-M)return;
if(obx==x&&oby==y)
{
Tmin[p]=min(Tmin[p],t);
return;
}
if(no<=M)
{
while(S[no].T<=t)
{
m[S[no].X][S[no].Y]=0;
m[max(0,S[no].X-1)][S[no].Y]=0;
m[S[no].X+1][S[no].Y]=0;
m[S[no].X][S[no].Y+1]=0;
m[S[no].X][max(0,S[no].Y-1)]=0;
no++;
}
}
/*for(int i=0;i<=10;i++)
{
for(int j=0;j<=10;j++)
{
cout<<m[i][j]<<' ';
}
cout<<endl;
}*/
if(x<300&&m[x+1][y]==1)
{
m[x][y]=0;
dfs(t+1,no,x+1,y);
m[x+1][y]=1;
}
if(y<300&&m[x][y+1]==1)
{
m[x][y]=0;
dfs(t+1,no,x,y+1);
m[x][y]=1;
}
if(x>0&&m[x-1][y]==1)
{
m[x][y]=0;
dfs(t+1,no,x-1,y);
m[x][y]=1;
}
if(y>0&&m[x][y-1]==1)
{
m[x][y]=0;
dfs(t+1,no,x,y-1);
m[x][y]=1;
}
return;
} int main()
{
cin>>M;
for(int i=1;i<=90000-M;i++) Tmin[i]=609;
for(int i=1;i<=M;i++)
{
cin>>S[i].T>>S[i].X>>S[i].Y;
b[S[i].X][S[i].Y]=1;
b[S[i].X+1][S[i].Y]=1;
b[max(0,S[i].X-1)][S[i].Y]=1;
b[S[i].X][max(0,S[i].Y-1)]=1;
b[S[i].X][S[i].Y+1]=1;
} sort(S+1,S+M+1,cmp);
for(int i=0;i<=300;i++)
for(int j=0;j<=300;j++)
{
if(i==0&&j==0)continue;
if(b[i][j]==0&&i+j<tmin)
{
for(int ii=0;ii<=300;ii++)
for(int jj=0;jj<=300;jj++)
m[ii][jj]=1;
p++;
obx=i;
oby=j;
dfs(0,1,0,0);cout<<2<<endl;
tmin=min(tmin,Tmin[p]);
}
}
if(tmin==99999999)
cout<<-1;
else
cout<<tmin;
return 0;
}

P2895(未解决)的更多相关文章

  1. C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)

    详解link  有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错 ...

  2. 直接请求json文件爬取天眼查企业信息(未解决验证码问题)——python3实现

    几个月前...省略一堆剧情...直接请求json文件爬取企业信息未成功,在知乎提问后,得到解决,有大佬说带上全部headers和cookie是可以的,我就又去试了下,果然可以(之前自己试的时候不行,没 ...

  3. 记一次未解决的异常:java.lang.NoClassDefFoundError: net/sf/json/JSONObject

    原因:Jetty会导致这个问题,Tomcat可以正常启动   一.异常产生现象 使用json-lib转换实体类/字符串,跑单元测试没问题,但是启动jetty后调用JSONArray.fromObjec ...

  4. Ajax返回中文乱码问题(未解决)

    (未解决) 暂时使用办法:改用返回Map<String,String>形式的返回值,在ajax中获取json形式的数据.

  5. openerp学习笔记 计算字段、关联字段(7.0中非计算字段、关联字段只读时无法修改保存的问题暂未解决)

    计算字段.关联字段,对象修改时自动变更保存(当 store=True 时),当 store=False 时,默认不支持过滤和分组7.0中非计算字段.关联字段只读时无法修改保存的问题暂未解决 示例代码: ...

  6. oracle,wamp,FZ突然出现问题,求解决方案(未解决,最终系统还原)

    -----背景------- 系统:win7  64位oracle 11g(11.1)每天都用oracle.用toad for oracle .电脑固定IP.未更改任何配置信息.用了几个月,突然出现了 ...

  7. (转载) C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)

    转载http://blog.csdn.net/neo_ustc/article/details/9024839 有 些人写C/C++(以下假定为C++)程序,对unresolved external ...

  8. tomcat中显示本地图片①(未解决)

    <本模块文仅作为学习过程中的自我总结,有需要可参看,欢迎指导与提出建议,很多地方可能断章取义,理解不到位,虚心求学.谢谢!> 资料查阅原因:2018/7/10(做项目中显示详情页面,从数据 ...

  9. JIRA状态为任务结束,但是解决结果为未解决相关配置

    1.JIRA状态为任务结束,但是解决结果为未解决,如下图所示: 2.在工作流->界面->结果处理中进行解决结果的配置(首先确保界面配置中有“解决结果”字段). 3.点击“结果处理”,进行结 ...

  10. [未解决]Exception in thread "main" java.lang.IllegalArgumentException: offset (0) + length (8) exceed the capacity of the array: 6

    调用这个方法 是报错,未解决 binfo.setTradeAmount(Double.parseDouble(new String(result.getValue(Bytes.toBytes(fami ...

随机推荐

  1. 用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识

    写这个博客的目的就是我在网上看了半天,发现没有这方面的知识,也许是老手认为这个太简单了,不过我还是告诉新人使用dbeaver来创建一个enum类型的方法: 就是enum("a",& ...

  2. java,类、实例化、构造方法、this关键字、方法重载

    编写类的步骤: 1.定义类名 2.编写类的属性 3.编写类的方法 public  访问修饰符,表示在整个项目中都可以调用,也可以用其他词 使用class关键字来定义类,如下,定义一个Cat类 给了属性 ...

  3. java之switch用法

    多条件判断,判断条件是等值判断时,可以用switch 比如: 变量level=0时,输出"非会员" 变量level=1时,输出"打9折" 变量level=2时, ...

  4. 在IDEA启动多个Spring Boot工程实例

    在IDEA上点击Application右边的下三角 ,弹出选项后,点击Edit Configuration 选中需要多实例启动的应用,将默认的Single instance only(单实例)的钩去掉 ...

  5. 从零玩转Yaip使用-cong-ling-wan-zhuan-yaip-shi-yong

    title: 从零玩转Yaip使用 date: 2021-07-16 15:47:17.624 updated: 2021-12-26 17:43:12.255 url: https://www.yb ...

  6. Spring表达式语言(SPEL)学习(03)

    rootObject 在表达式中直接写name和getName(),这时候Expression是无法解析的,因为其不知道name和getName()对应什么意思 @Test public void t ...

  7. Flutter Getx 路由管理

    GetX 为我们封装了 Navigation ,无需 context 可进行跳转,使用 GetX 进行路由跳转非常的简单, 只需要调用 Get.to() 即可进行路由跳转, GetX 路由跳转简化了跳 ...

  8. spring-mvc 系列:获取请求参数(ServletAPI、形参、RequestParam、RequestHeader、CookieValue、POJO等方式)

    目录 一.通过 ServletAPI 获取 二.通过控制器方法的形参获取请求参数 三.@RequestParam 四.@RequestHeader 五.@CookieValue 六.通过 POJO 获 ...

  9. Python从零到壹丨带你了解图像直方图理论知识和绘制实现

    摘要:本文将从OpenCV和Matplotlib两个方面介绍如何绘制直方图,这将为图像处理像素对比提供有效支撑. 本文分享自华为云社区<[Python从零到壹] 五十.图像增强及运算篇之图像直方 ...

  10. 小熊派开发实践丨漫谈LiteOS之传感器移植

    摘要:本文基于小熊派开发板简单介绍了如何在LiteOS中移植传感器,从而实现对于传感器的相关控制. 1 hello world 相信大家无论在学习编程语言开始的第一个函数应该是HelloWorld,本 ...