【动态规划】Vijos P1121 马拦过河卒
题目链接:
题目大意:
卒从(0,0)走到(n,m),只能向下或向右,不能被马一步碰到或走到马,有几种走法。
题目思路:
【动态规划】
把马控制的地方全部标记,接下来DP,f[i][j]=f[i-1][j]+f[i][j-1];
//
//by coolxxx
//#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<map>
#include<memory.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#include<stdbool.h>
#include<math.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(a) ((a)>0?(a):(-(a)))
#define lowbit(a) (a&(-a))
#define sqr(a) ((a)*(a))
#define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
#define mem(a,b) memset(a,b,sizeof(a))
#define eps (1e-8)
#define J 10
#define MAX 0x7f7f7f7f
#define PI 3.14159265358979323
#define N 24
using namespace std;
typedef long long LL;
int cas,cass;
int n,m,lll,ans;
int f[N][N];
int main()
{
#ifndef ONLINE_JUDGE
// freopen("1.txt","r",stdin);
// freopen("2.txt","w",stdout);
#endif
int i,j,hx,hy;
// for(scanf("%d",&cas);cas;cas--)
// for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
while(~scanf("%d",&n))
// while(~scanf("%d",&n))
{
scanf("%d%d%d",&m,&hx,&hy);
n+=,m+=,hx+=,hy+=;
f[hx][hy]=f[hx-][hy-]=f[hx-][hy+]=f[hx-][hy-]=f[hx-][hy+]=f[hx+][hy-]=f[hx+][hy+]=f[hx+][hy-]=f[hx+][hy+]=-MAX;
f[][]=,f[][]=;
for(i=;i<=n;i++)
{
for(j=;j<=m;j++)
{
if(f[i][j]==-MAX)continue;
if(f[i-][j]!=-MAX)f[i][j]+=f[i-][j];
if(f[i][j-]!=-MAX)f[i][j]+=f[i][j-];
}
}
printf("%d\n",f[n][m]);
}
return ;
}
/*
// //
*/
【动态规划】Vijos P1121 马拦过河卒的更多相关文章
- Vijos 1121 马拦过河卒
		
首先要看清题目,卒只能向右或者向下走.而不是四周转.这样的话就无解了. 定义f[i][j],表示走到(i,j)这个点时的总步数.这样就写出了一个递推公式f[i][j]=f[i-1]+f[i][j-1] ...
 - ACM题目————马拦过河卒
		
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...
 - NOIP 马拦过河卒
		
描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. 棋盘 ...
 - ACM 马拦过河卒(动态规划)
		
解题思路: 用一个二维数组a[i][j]标记 马的位置和马的跳点(统称控制点)该位置=1: 再用一个二维数组f[i][j]表示行进的位置,如果前一行的当前列不是马的控制点,或者前一列的当前行不是马的控 ...
 - 洛谷P1002 过河卒 题解 动态规划
		
题目链接:https://www.luogu.com.cn/problem/P1002 题目大意 棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点.卒行走的规则:可以向下.或者向右.同时在棋盘 ...
 - 洛谷P1002 过河卒 [2017年4月计划 动态规划15]
		
P1002 过河卒 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之 ...
 - 洛谷P1002 过河卒(动态规划)
		
题目描述 棋盘上 AA 点有一个过河卒,需要走到目标 BB 点.卒行走的规则:可以向下.或者向右.同时在棋盘上 CC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为 ...
 - 洛谷 P1002过河卒
		
洛谷 P1002过河卒 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点 ...
 - AC日记——过河卒 洛谷 1002
		
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...
 
随机推荐
- Python之路【第十七篇】:Django【进阶篇】
			
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
 - (转)webstorm快捷键
			
Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) ...
 - js的MVC结构设计
			
基于jquery的Deferred,设计出如下MVC架构. 模型model interface.js interface: function(userid){ var dtd = $.Deferred ...
 - CSS3条件判断——@supports/window.CSS.supports()(转)
			
CSS3条件判断,听起来"不明觉厉",如果你对CSS稍为熟悉一点的话,你会发现CSS中的"@media"就是条件判断之一.是的,在CSS3的条件判断规范文档中包 ...
 - How to Make LastPass Even More Secure with Google Authenticator
			
Google Authenticator LastPass supports Google Authenticator, which is officially available as an app ...
 - 分享最近写的 两条sql语句
			
1. 搭建基本环境 插入测试数据 insert into jgdm (jgdm,jgmc) values('12300000000','河南省');insert into jgdm (jgdm,jg ...
 - TextField的文字距左边框的距离偏移
			
默认情况下,当向textField输入文字时,文字会紧贴在textField左边框上. 我们可以通过设置textField的leftView,设置一个只有宽度的leftView. 这样还不够,因为默认 ...
 - 绘图quartz之阴影
			
//设置矩形的阴影 并在后边加一个圆 不带阴影 步骤: CGContextRef context = UIGraphicsGetCurrentContext(); ...
 - Java反射学习(java reflect)(三)
			
五.方法指针 据说JAVA方法指针的出现,是作为反射包的附产品 : 使用原理:Invoke被允许调用包装在当前Method对象的方法: 第一个参数为隐式参数,可用null,第二个参数为显示参数. Ex ...
 - Invalid project description overlaps the location of another project [android]
			
解决办法: 1.将工程放到其他目录下,然后执行Android工程的导入,导入时可以选择“Copy projects into workspace”: 2.不用Android工程导入,而用普通的工程导入 ...