题目链接

算法: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 过河卒的更多相关文章

  1. wikioi 1010 过河卒

    题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点 ...

  2. Codevs 1010 过河卒 2002年NOIP全国联赛普及组

    1010 过河卒 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 如图,A 点有一个过河卒 ...

  3. 1010 过河卒 2002年NOIP全国联赛普及组codevs

    1010 过河卒  2002年NOIP全国联赛普及组codevs 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点 ...

  4. Codevs 1010 过河卒

     时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同 ...

  5. codevs——1010 过河卒(棋盘DP)

    2002年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 如图,A 点有 ...

  6. Codevs 1010 过河卒== 洛谷 1002

     时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同 ...

  7. 【动态规划】【记忆化搜索】CODEVS 1010 过河卒 2002年NOIP全国联赛普及组

    f(i,j)=f(i-1,j)+f(i,j-1),显然可以暴力递归求解,但是很多重复的状态,所以可以记忆下来. 注意障碍点和边界的特判. #include<cstdio> #include ...

  8. dp练习(4)——过河卒

    1010 过河卒 2002年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 如图,A ...

  9. 洛谷——P1002 过河卒||codevs——T1010 过河卒

    https://www.luogu.org/problem/show?pid=1002#sub||http://codevs.cn/problem/1010/ 题目描述 棋盘上A点有一个过河卒,需要走 ...

随机推荐

  1. A PHP extension for Facebook's RocksDB

    A PHP extension for Facebook's RocksDB 31 commits 2 branches 0 releases 2 contributors C++ 90.5% C 8 ...

  2. C++类编程(一)const的使用

    设计类时,考虑以下五点 1.构造函数初始化列表 2.函数该不该加const 3.参数传递尽量考虑用引用传递,考虑加不加const 4.返回用不用引用 5.数据尽量放在private,函数尽量放在pub ...

  3. Maven发布web项目到tomcat

    在java开发中经常要引入很多第三方jar包:然而无论是java web开发还是其他java项目的开发经常会由于缺少依赖包引来一些不必要的异常.常常也是因为这样的原因导致许多简单的缺包和版本问题耗费大 ...

  4. Java集合框架中List接口的简单使用

    Java集合框架可以简单的理解为一种放置对象的容器,和数学中的集合概念类似,Java中的集合可以存放一系列对象的引用,也可以看做是数组的提升,Java集合类是一种工具类,只有相同类型的对象引用才可以放 ...

  5. 一个程序中关于多个osgGA::GUIEventHandler同时存在的问题

    平时使用GUIEventHandler不太注意handle()函数的返回值,觉得返回true或者false都无所谓,其实不然. 我遇到的问题是程序中一个节点添加了GUIEventHandler对象pi ...

  6. [Android Pro] 关于Android的HTTP客户端的小秘密

    原文:http://android-developers.blogspot.com/2011/09/androids-http-clients.html 译文:http://yunfeng.sinaa ...

  7. js判断是否为正整数的正则写法 JavaScript正整数正则

    判断是否为正整数 JavaScript正则判断一串数字是否为正整数, 首先要明白这几个问题 1:javascript里会把一串数字前边的0自动屏蔽,(我不知道屏蔽这个词用的是否正确) console. ...

  8. cf455a(简单dp)

    题意:给出一个长度为n的数列,元素为a1, a2, ...an:删除ai,ai+1,ai-1 可以得到ai积分,输出最多可以得到多少积分: 题解:开一个数组a存取数列,a[i]表示元素i的个数,所以删 ...

  9. linux下跳板机跟客户端之间无密码登陆

    创建证书: [root@lnmp src]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which ...

  10. ping: unknown host www.baidu.com

    #注意有很多的DNS服务器 为了防止DDOS攻击 所以都禁止PING [root@86 ~]# ping -c 2 www.baidu.com ping: unknown host www.baidu ...