hdu1010—我的惯性思维
来源:互联网 发布:深圳华夏职业软件学院 编辑:程序博客网 时间:2024/05/17 05:28
把墙的标记‘X’惯性的写成了‘#’,所以一直调不出来;之后看到是‘X’后,我发现我就是一逗比!
这题剪枝有点多:
一:最少要走的步数>时间;
二:奇偶剪枝——只可能为偶数;
三:步数<时间(走过就会塌掉);
#include<cstdio>#include<cmath>#include<cstring>using namespace std;char map[8][8];int cnt,T,flag,n,m,dx,dy,sx,sy;int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};void dfs(int cnt,int x,int y){ if(cnt==T){ if(x==dx&&y==dy)flag=1; return ; } if(flag)return ; int temp=abs(x-dx)+abs(y-dy)-abs(cnt-T); //奇偶剪枝; if(temp>0||temp&1)return ; for(int i=0;i<4;i++){ int newx=x+dir[i][0]; int newy=y+dir[i][1]; if(newx>=0&&newx<n&&newy>=0&&newy<m&&map[newx][newy]!='X'){ map[newx][newy]='X'; dfs(cnt+1,newx,newy); map[newx][newy]='.'; } }}int main(){ //freopen("int.txt","r",stdin); while(~scanf("%d%d%d",&n,&m,&T)&&(n||m||T)){ int wall=0; for(int i=0;i<n;i++){ scanf("%s",map[i]); for(int p=0;p<m;p++){ if(map[i][p]=='S'){sx=i;sy=p;} else if(map[i][p]=='D'){dx=i;dy=p;} else if(map[i][p]=='X')wall++; } } if(m*n-wall<=T) {printf("NO\n");continue;} /*for(int i=0;i<n;i++){ puts(map[i]); }*/ flag=0; map[sx][sy]='X'; //不要漏标首元素; dfs(0,sx,sy); if(flag)printf("YES\n"); else printf("NO\n"); }}
0 0
- hdu1010—我的惯性思维
- 我的思维惯性
- 思维的惯性
- 人的惯性思维
- 程序员的几个思维惯性
- 我的惯性错误
- Java程序员惯性思维的一个错误
- Java程序员惯性思维的一个错误
- 思维惯性引发的编程问题
- 小心,分析问题时的思维惯性
- 你最大的敌人,是惯性思维
- 打破惯性思维的限制——职场人士寓言(9)
- 突破SEO惯性思维
- 我的惯性导航开发开篇---架构
- 思维的惯性 数值设计的不可逆--风云
- 思维的惯性之游戏中buf管理
- 所有的自卑,可能都源于这个惯性思维
- 杭电1728————一直WA的BFS(有思维惯性带来的陷阱)
- JAVA args参数输入 (CMD 和Eclipse两种情况)
- 用Latex排版论文(4)《大连海事大学硕博学位论文Latex模板》中算法排版例子(添加中文输入和输出)
- nodejs在linux下的源代码方式安装
- 使用 GNU profiler 来提高代码运行速度
- 微信公众平台让人又爱又恨!
- hdu1010—我的惯性思维
- java基本环境配置
- spring源码学习之路---深入AOP(终)
- spring源码学习之路---AOP初探
- 卫哲的3+1思考法:测量项目“靠谱程度”
- 舞蹈的中文化艺术精神{我很好也特别开心
- (三)共享程序集(随笔)
- 如何计算k段流水线执行n条指令的执行时间
- OpenStack资料整理[持续更新中...]