题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1110
结题报告:搜索中的一个重要的剪枝,现在记录下来,作为一个积累;
起点到终点的距离即sx-ex+sy-ey如果是奇数, 则题目中所给定的时间一定是只有奇数才可能得到结果,如果题目中的起点到终点的距离如果是偶数,则题目中给的时间如果是偶数才可能得到想要的结果。如何优化题目代码已经标记:
#include<cstdio> #include<cstring> using namespace std; const int maxn = 10; int n,m,t,step,flag; int dir[4][2]={0,-1,0,1,1,0,-1,0}; char mp[maxn][maxn]; int sx,sy,ex,ey; void dfs(int d,int r,int s) { if(d<0||d>=n||r<0||r>=m) return ; if(ex==d&&ey==r&&s==t) { flag = 1; return s; } for(int i=0;i<4;i++) { int xx=d+dir[i][0]; int yy=r+dir[i][1]; if(mp[xx][yy] != 'X') { mp[xx][yy]='X'; dfs(xx,yy,s+1); if(flag) return 1; mp[xx][yy]='.'; } } return s ; } int main() { int cnt ; while(scanf("%d %d %d",&n,&m,&t)!=EOF) { cnt=0; if(!(n || m || t)) break; for(int i=0;i<n;i++) { scanf("%s",mp[i]); for(int j=0;j<m;j++) { if(mp[i][j] == 'S') { sx=i; sy=j; } if(mp[i][j] == 'D') { ex=i; ey=j; } if(mp[i][j]=='X') cnt++; } } if(n*m-cnt<=t) { printf("NO\n"); continue; } int temp = t-(sx-ex+sy-ey); if(temp <0||temp%2)//一个重要的优化 { printf("NO\n"); continue; } flag = 0; mp[sx][sy]='X'; dfs(sx,sy,0); if(flag) printf("YES\n"); else printf("NO\n"); } return 0; }
相关推荐
5. **2110Tempter of the Bone.cpp**:这个题目名称较为抽象,但根据ACM背景,可能是关于贪心策略或动态规划的问题,涉及到如何选择最优决策来达到目标。 6. **1062Trees Made to Order.cpp**:这很可能是关于树...
zoj 3663 Polaris of Pandora.md
在ZOJ上,每个题目都有自己的标签,便于用户搜索和分类。 【压缩包子文件的文件名称列表】仅有一个文件名 "zoj 1002",这很可能是一个C++源代码文件,可能命名为`zoj1002.cpp`或`zoj1002.cc`,用于解决ZOJ 1002题目...
zoj 1610 Count the Colors.md
【标题】"zoj 源码700题"是指一个包含700多道ZOJ(在线判题系统Zhejiang Online Judge)编程竞赛题目的源代码集合。这个资源对于学习算法、提高编程技能以及准备编程竞赛的学员来说极具价值。 【描述】"包含了zoj...
zoj 1255 The Path.md
zoj 1810 The Gourmet Club.md
zoj 2151 The Highest Profits.md
zoj 2499 The Happy Worm.md
ZOJ,全称“浙江大学程序在线评测系统”(Zhejiang University Online Judge),是一个提供信息学(算法竞赛)题库及程序评测的网站。以下是关于ZOJ的详细介绍: 一、基本信息 名称:浙江大学程序在线评测系统(ZOJ)...
zoj 题库 详细解答 解题代码 该资源主要涵盖了 zoj 题库中的各种编程题目,涵盖了基本算法、数据结构、数学运算等多个方面的知识点。下面是对该资源中出现的知识点的详细解释: 1. 第一次 ACM 总结(7th ACM) 该...
2. **搜索与图论**:深度优先搜索(DFS)、广度优先搜索(BFS)在图论问题中广泛使用,如最短路径、最小生成树、拓扑排序等。理解和熟练运用这些方法能帮助解决复杂的问题。 3. **动态规划(DP)**:动态规划是一种...
首先,我们可以从这些源代码中学习到基础的算法思想,如排序算法(快速排序、归并排序、冒泡排序、插入排序等)、搜索算法(二分查找、深度优先搜索、广度优先搜索等)。这些算法是解决问题的基本工具,理解和掌握...
【标题】"ZOJ1027解题指南"是一个针对特定编程竞赛题目——ZOJ1027的解决方案集合。ZOJ,全称为“Zhejiang Online Judge”,是浙江大学主办的一个在线编程竞赛平台,提供了丰富的算法题目供参赛者练习和挑战。本解题...
Problem Arrangement zoj 3777
浙江大学ZOJ(Zhejiang University Online Judge)是一个在线编程练习平台,主要服务于计算机科学和技术的学习者,特别是对算法和编程有浓厚兴趣的学生。这个平台提供了大量的编程题目,涵盖了各种难度和主题,帮助...
标题中的"ZOJ.gz_ ZOJ_ZOJ 1016_max flow_zoj 1045_zoj.rar" 提到了两个ZOJ(Zhejiang Online Judge)的题目,分别是1016和1045,这两个数字通常代表在线编程竞赛中的题目编号。这些题目通常涉及到算法和数据结构的...
1. **基础算法**:源代码中可能涉及了各种基础算法,如排序(快速排序、归并排序、堆排序)、搜索(深度优先搜索、广度优先搜索)、图论(最短路径、最小生成树)、动态规划等。这些都是编程竞赛中常见的问题解决...
3. **搜索算法**:深度优先搜索(DFS)、广度优先搜索(BFS)、A* 搜索、Dijkstra 算法、Floyd-Warshall 算法等,这些是解决图论问题和路径查找的关键。 4. **动态规划**:背包问题、最长公共子序列、最短路径、...
【ZOJ.zip】是一个压缩包,里面包含了与ZOJ(Zhejiang Online Judge)相关的ACM(International Collegiate Programming Contest)题解。ZOJ是一个在线编程竞赛平台,它为参赛者提供了一系列算法题目进行练习,以...