题目链接

算法: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. php中global与$GLOBALS的用法及区别-转载

    php中global 与 $GLOBALS[""] 差别 原本觉得global和$GLOBALS除了写法不一样觉得,其他都一样,可是在实际利用中发现2者的差别还是很大的! 先看下面 ...

  2. MPlayer-ww 增加边看边剪切功能+生成高质量GIF功能

    http://pan.baidu.com/s/1eQm5a74 下载FFmpeg palettegen paletteuse documentation 需要下载 FFmpeg2.6 以上 并FFmp ...

  3. TinyMCE textarea 输入框外部程序动态修改方法

    TinyMCE textarea 输入框外部程序动态修改方法 Public Function C2IE_TINYMCE(ByVal id As String, ByVal value As Strin ...

  4. Android涉及到的设计模式

    转载地址:http://blog.csdn.net/dengshengjin2234/article/details/8502097 1.适配器模式:ListView或GridView的Adapter ...

  5. 配置SecureCRT连接本地虚拟机中的Linux系统

    转自:http://www.pythoner.com/196.html 由于平时公司开发时都是使用SecureCRT连接的Linux服务器,所以也想使用SecureCRT在自己电脑上连接本地虚拟机中的 ...

  6. (六)STM32的时钟系统

    在STM32中,一共有5个时钟源,分别是HSI.HSE.LSI.LSE.PLL (1) HSI是高速内部时钟,RC振荡器,频率为8MHz: (2) HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外 ...

  7. FragmentTabHost+ViewPager实现底部按钮

    package com.example.fragmenttabdemo; import java.util.ArrayList; import java.util.List; import andro ...

  8. zabbix 修改管理员用户密码

    mysql> use zabbix mysql> desc users; +----------------+---------------------+------+-----+---- ...

  9. EntityFramework中支持BulkInsert扩展(转载)

    前言 很显然,你应该不至于使用 EntityFramework 直接插入 10W 数据到数据库中,那可能得用上个几分钟.EntityFramework 最被人诟病的地方就是它的性能,处理大量数据时的效 ...

  10. 人人都可以开发高可用高伸缩应用——论Azure Service Fabric的意义

    今天推荐的文章其实是微软的一篇官方公告,宣布其即将发布的一个支撑高可用高伸缩云服务的框架--Azure Service Fabric. 前两天,微软Azure平台的CTO Mark Russinovi ...