马拦过河卒

nid=24#time" title="C、C++、go、haskell、lua、pascal Time Limit3000ms Memory Limit 65536K java、python2、python3、ruby、perl Time Limit6000ms Memory Limit 131072K" style="padding:0px; margin:0px; color:rgb(83,113,197); text-decoration:none">

Time Limit: 3000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描写叙述

棋盘上A点有一个过河卒,须要走到目标B点。卒行走的规则:可以向下、或者向右。

同一时候在棋盘上C点有一个对方的马,该马所在的点和全部跳跃一步可达的点称为对方马的控制点。

因此称之为“马拦过河卒”。棋盘用坐标表示,A点(0。0)、B点(n,m)(n,m为不超过15的整数)。相同马的位置坐标是须要给出的。如今要求你计算出卒从A点可以到达B点的路径的条数,如果马的位置是固定不动的,并非卒走一步马走一步。

输入

一行四个数据,用空格分隔,分别表示B点的坐标和马的坐标。

输出

一个数据,表示全部的路径条数。

演示样例输入

6 6 3 3

演示样例输出

6
sad 写了好久。。

接近一个小时。一開始竟然把马的范围初始化错了。。
首先生成地图,然后挂掉马的范围(8个点) 。然后爆搜就能够了。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <list>
#define ll long long
using namespace std;
const int INF = 0x3f3f3f3f;
int n,m,ex,ey,ans,ma[20][20];
bool vis[20][20];
void dfs(int x,int y)
{
if(x==n&&y==m)
{
ans++;
return ;
}
if(x+1<=n&&ma[x+1][y]&&!vis[x+1][y])
{
vis[x+1][y]=1;
dfs(x+1,y);
vis[x+1][y]=0;
}
if(y+1<=m&&ma[x][y+1]&&!vis[x][y+1])
{
vis[x][y+1]=1;
dfs(x,y+1);
vis[x][y+1]=0;
}
}
int main()
{
memset(vis,0,sizeof(vis));
scanf("%d%d%d%d",&n,&m,&ex,&ey);
ans=0;
for(int i=0;i<=n;i++)
for(int j=0;j<=m;j++)
ma[i][j]=1;
if(ex-1>=0&&ex-1<=n&&ey-2>=0&&ey-2<=m)ma[ex-1][ey-2]=0;
if(ex-1>=0&&ex-1<=n&&ey+2>=0&&ey+2<=m)ma[ex-1][ey+2]=0;
if(ex+1>=0&&ex+1<=n&&ey-2>=0&&ey-2<=m)ma[ex+1][ey-2]=0;
if(ex+1>=0&&ex+1<=n&&ey+2>=0&&ey+2<=m)ma[ex+1][ey+2]=0;
if(ex+2>=0&&ex+2<=n&&ey-1>=0&&ey-1<=m)ma[ex+2][ey-1]=0;
if(ex+2>=0&&ex+2<=n&&ey+1>=0&&ey+1<=m)ma[ex+2][ey+1]=0;
if(ex-2>=0&&ex-2<=n&&ey+1>=0&&ey+1<=m)ma[ex-2][ey+1]=0;
if(ex-2>=0&&ex-2<=n&&ey-1>=0&&ey-1<=m)ma[ex-2][ey-1]=0;
if(ex>=0&&ex<=n&&ey>=0&&ey<=m)ma[ex][ey]=0;
vis[0][0]=1;
dfs(0,0);
printf("%d\n",ans);
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

SDUT 1265-马停下过河卒(DFS)的更多相关文章

  1. ACM题目————马拦过河卒

    题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...

  2. NOIP 马拦过河卒

    描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. 棋盘 ...

  3. 【动态规划】Vijos P1121 马拦过河卒

    题目链接: https://vijos.org/p/1616 题目大意: 卒从(0,0)走到(n,m),只能向下或向右,不能被马一步碰到或走到马,有几种走法. 题目思路: [动态规划] 把马控制的地方 ...

  4. Vijos 1121 马拦过河卒

    首先要看清题目,卒只能向右或者向下走.而不是四周转.这样的话就无解了. 定义f[i][j],表示走到(i,j)这个点时的总步数.这样就写出了一个递推公式f[i][j]=f[i-1]+f[i][j-1] ...

  5. ACM 马拦过河卒(动态规划)

    解题思路: 用一个二维数组a[i][j]标记 马的位置和马的跳点(统称控制点)该位置=1: 再用一个二维数组f[i][j]表示行进的位置,如果前一行的当前列不是马的控制点,或者前一列的当前行不是马的控 ...

  6. AC日记——过河卒 洛谷 1002

    题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...

  7. P1002 过河卒

    题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...

  8. 洛谷 P1002 过河卒 【棋盘dp】

    题目链接:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...

  9. 洛谷[P1002]过河卒

    原题地址:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...

随机推荐

  1. 恢复js文件在windows默认打开方式

    解决办法: 运行 regedit 打开注册表编辑器,定位 "HKEY_CLASSES_ROOT" > ".js" 这一项,双击默认值将数值数据改为&quo ...

  2. CSS3 3D旋转动画代码实例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. gc overhead limit exceeded eclipse错误解决方式

    在Eclipse打包的时候报错:gc overhead limit exceeded eclipse 原因是Eclipse默认配置内存太小须要更改安装Eclipse目录下的eclipse.ini文件. ...

  4. 开源 自由 java CMS - FreeCMS1.8 网上申报

    项目地址:http://code.google.com/p/freecms/ 在线申报 1. 转交申报 用户能够把申报转交给其它人办理,系统会记录此申报的转交记录. 注意:同一时候仅仅能转交一个申报. ...

  5. ExternalInterface的简单使用方法

    ExternalInterface的简单使用方法 使用ExternalInterface调用JavaScript方法-无返回值flex代码------------------<mx:Button ...

  6. 使用python写appium用例

    安装Python依赖 pip3.4 install nose pip3.4 install selenium pip3.4 install Appium-Python-Client 执行測试用例and ...

  7. bzoj 1874 取石子游戏 题解 &amp; SG函数初探

    [原题] 1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 334  Solved ...

  8. Android异步任务

    本文主要探讨Android平台提供的各种异步载入机制,包括它们的适用场景.用法等. 1. AsynTask AsynTask适用于最长能够持续几秒钟的短时间的操作,对于长时间的操作,建议使用java. ...

  9. android对app代码混淆

    接到新任务.现有项目的代码混淆.在此之前混淆了一些理解,但还不够具体和全面,我知道有些东西混起来相当棘手. 但幸运的是,现在这个项目是不是太复杂(对于这有些混乱).提前完成--这是总结. 第一部分 介 ...

  10. XMPP得知--建立一个管理类

    参考其他demo之后,设立一个管理类的发现看起来更舒服,理-- 但在建立与server连接其中.发现 Connect Error: {     NSLocalizedDescription = &qu ...