【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点有一个过河卒,需要走 ...
随机推荐
- 双操作系统Grub 引导修护
,只要进入ubuntu :sudo update-grub 就行了! 它会自动给Grub添加NTFS模块,以支持NTFS下的文件读取 转自: http://zhidao.baidu.com/link? ...
- ecshop设置一个子类对应多个父类并指定跳转url的修改方法
这是一篇记录在日记里面的技术文档,其实是对ecshop的二次开发.主要作用是将一个子类对应多个父类,并指定条跳转url的功能.ecshop是一款在线购物网站,感兴趣的可以下载源码看看.我们看看具体是怎 ...
- DP:Making the Grade(POJ 3666)
聪明的修路方案 题目大意:就是农夫要修一条路,现在要求这条路要么就是上升的,要么就是下降的,总代价为∑|a[i]-b[i]|,求代价最低的修路方案, (0 ≤ β≤ 1,000,000,000) , ...
- fedora 添加其他操作系统到 GRUB 2 菜单
# yum install os-prober # grub2-mkconfig -o /boot/grub2/grub.cfg
- Java 全半角转换
* 全角转半角的 转换函数* @return String*/public static final String full2HalfChange(String QJstr){StringBuffer ...
- windows网络版象棋的实现
要构建网络版象棋,首先应该创建服务器与客户端,建立socket连接 1) 开局,你是什么颜色 2)选择棋子, 3)走棋 4)悔棋(悔棋悔两步) 5)认输 网络实现: 1)建立连接 a.主机,建立监听s ...
- ssdb使用
安装 wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip unzip master cd ssd ...
- STL 常见操作
stl的操作不是很熟练, 记录一下 1.vector: 排序: sort(vc.begin(),vc.end()); 去重: sort(vc.begin(),vc.end()); num.erase( ...
- BZOJ2783: [JLOI2012]树 dfs+set
2783: [JLOI2012]树 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 588 Solved: 347 Description 数列 提交文 ...
- 启动mysql出现了error the server quit without updating pid file (/var/lib/mysql/localhost.localdomain.pid)
原来是我的mysql日志太多,所以去/data/log/mysql目录(这个目录是从/etc/my.cnf中的log-error确定的)下删除了 rm -rf mysql_binary_log.*的日 ...