【wikioi】1010 过河卒
算法:DFS+剪枝
14.01.02 PS: 递推应该也可以的,改天看看
刚开始最容易想到的是朴素搜索
#include <iostream>
using namespace std;
int n, m, X, Y;
int ans = 0;
void dfs(int i, int j)
{
if(i == 0 && j == 0){ans++; return;}
if(i<0||j<0||(i==X&&j==Y) ||
(i==X-2&&(j==Y-2||j==Y-1||j==Y+1)) ||
(i==X+1&&(j==Y-2||j==Y+1||j==Y+2)) ||
(i==X-1&&(j==Y-2||j==Y+2)) ||
(i==X+2&&(j==Y-1||j==Y+1)) )
return;
dfs(i,j-1); dfs(i-1,j);
}
int main()
{
cin >> n >> m >> X >> Y;
dfs(n, m);
cout << ans << endl;
return 0;
}
虽然能AC,但是数据一大就TLE了。
然后想到的是剪枝
//简单的搜索
#include <iostream>
using namespace std;
const int N = 15, M = 15;
int n, m, X, Y;
int f[N+2][M+2] = {0};
void dfs(int i, int j)
{
//一系列复杂的判断= =
if((i==X&&j==Y) ||
(i==X-2&&(j==Y-2||j==Y-1||j==Y+1)) ||
(i==X+1&&(j==Y-2||j==Y+1||j==Y+2)) ||
(i==X-1&&(j==Y-2||j==Y+2)) ||
(i==X+2&&(j==Y-1||j==Y+1)) )
return;
if(j-1>0 && !f[i][j-1]) dfs(i,j-1);
if(i-1>0 && !f[i-1][j]) dfs(i-1,j);
f[i][j] = f[i][j-1] + f[i-1][j]; //路径数等于上面的加上左边的(这是逆向的dfs)
}
int main()
{
f[1][1] = 1;
cin >> n >> m >> X >> Y;
X++; //将下标归为以1开始
Y++; //将下标归为以1开始
dfs(n+1, m+1);
cout << f[n+1][m+1] << endl;
return 0;
}
AC
【wikioi】1010 过河卒的更多相关文章
- wikioi 1010 过河卒
题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点 ...
- Codevs 1010 过河卒 2002年NOIP全国联赛普及组
1010 过河卒 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 如图,A 点有一个过河卒 ...
- 1010 过河卒 2002年NOIP全国联赛普及组codevs
1010 过河卒 2002年NOIP全国联赛普及组codevs 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点 ...
- Codevs 1010 过河卒
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同 ...
- codevs——1010 过河卒(棋盘DP)
2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 如图,A 点有 ...
- Codevs 1010 过河卒== 洛谷 1002
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同 ...
- 【动态规划】【记忆化搜索】CODEVS 1010 过河卒 2002年NOIP全国联赛普及组
f(i,j)=f(i-1,j)+f(i,j-1),显然可以暴力递归求解,但是很多重复的状态,所以可以记忆下来. 注意障碍点和边界的特判. #include<cstdio> #include ...
- dp练习(4)——过河卒
1010 过河卒 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 如图,A ...
- 洛谷——P1002 过河卒||codevs——T1010 过河卒
https://www.luogu.org/problem/show?pid=1002#sub||http://codevs.cn/problem/1010/ 题目描述 棋盘上A点有一个过河卒,需要走 ...
随机推荐
- BZOJ2904
找了一个晚上的资料,拼凑出来这么一个东西: 1) 如果是完全平方数返回12) 如果可以表示成形如$x^2+y^2$的形式输出2.这要求该数质因数分解后形如$4k+3$的质因数次数都是偶数.3) 如果该 ...
- php如何将数组保存为文件的方法? 三个方法让你快速把数组保存成为文件存储
php 缓存数组形式的变量,实际上就是将 php 将数组写入到一个文本文件或者后缀名为 .php 存储起来,使用的时候直接调用这个文件.那么如何使用 php 将数组保存为文本格式的文件呢?下面分享三种 ...
- Smarty s02
保留变量 方便使用php 不用assign {$smarty} get {$smarty.get.page} session {$smarty.session.user.name} server c ...
- xml 解析 java 基础复习
document 解析 sax 解析 dom4j 解析(摘自csdn redarmychen) dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常 ...
- tesseract3.02识别验证码需要注意的问题
1.安装tesseract3.02后,在命令行里输入tesseract,看能否出现使用方法,不出现则是环境变量问题,可调整其顺序. 2.找到如下文件 C:\Python27\Lib\site-pack ...
- delphi 换行操作 Word
delphi 换行操作 我将我的商用<旅行社管理系统>的 发团通知 部分奉献给您,望对您有所帮助. procedure TFrmMain.N327Click(Sender: TObject ...
- href脱离iframe显示
iframe框架页面如下: <!DOCTYPE html><html lang="zh"><head><meta name='viewpo ...
- Struts2标签库
一. 写jsp页面的时候,在struts2中,用的是s标记,先引入标记: <%@ taglib prefix="s" uri="/struts-tags" ...
- JavaScript字符串&数字间转换
比较操作符的操作数可以是任意类型.然而,只有数字和字符串才能真正执行边角操作,因此那些不是数字和字符串的操作数都讲进行类型转换,类型转换规则如下: 如果操作数为对象,那么对象转换为原始值:如 ...
- ***阿里云linux 下怎么配置虚拟主机
最近有个问题,本人在阿里云买了linux服务器,用wordpress做了一个博客网站www.bravetiger.cn,现在想加一个电商系统进去,假设二级域名为:shop.bravetiger.cn, ...