过河卒(NOIP2002)
题目链接:过河卒
直接模拟?会T掉60分。
所以我们可以采用递推,怎么想到的?
因为卒子只能向下或向右走,所以走到一个点的方法数,等于走到它上面点的方法数加上走到它左边点的方法数,这样就可以地推了。
给代码:
#include<bits/stdc++.h>
#ifdef WIN32
#define LL "%I64d"
#else
#define LL "%lld"
#endif
using namespace std;
int main(){
int n,m,a,b;
scanf("%d%d%d%d",&n,&m,&a,&b);
long long ans[n+1][m+1]; //1
memset(ans,0,sizeof(ans));
for(int i=0;i<m+1;i++){ //2
ans[0][i]=1;
if((0==a&&i==b)||(0==a-1&&(i==b-2||i==b+2))||((0==a-2)&&(i==b-1||i==b+1))||((0==a+1)&&(i==b-2||i==b+2))||((0==a+2)&&(i==b-1||i==b+1))){ //5
ans[0][i]=0;
break; //6
}
}
for(int i=1;i<n+1;i++){ //3
ans[i][0]=1;
if((i==a&&0==b)||(i==a-1&&(0==b-2||0==b+2))||((i==a-2)&&(0==b-1||0==b+1))||((i==a+1)&&(0==b-2||0==b+2))||((i==a+2)&&(0==b-1||0==b+1))){
ans[i][0]=0;
break;
}
}
for(int i=1;i<n+1;i++){
for(int j=1;j<m+1;j++){
ans[i][j]=ans[i-1][j]+ans[i][j-1];//4
if((i==a&&j==b)||(i==a-1&&(j==b-2||j==b+2))||((i==a-2)&&(j==b-1||j==b+1))||((i==a+1)&&(j==b-2||j==b+2))||((i==a+2)&&(j==b-1||j==b+1))){
ans[i][j]=0;
}
}
}
printf(LL,ans[n][m]);
return 0;
}
一共提六处:
1处:ans用于保存答案
2、3处:初始化第一行、第一列为1
4处:递推
5处:这一大串就是判断是否在控制点。
6处:如果在,就把这一点清零,如果初始化的时候,那就直接退出,因为后面的点是走不到的。我就是因为初始化为判断控制点而丢了一部分的分。
过河卒(NOIP2002)的更多相关文章
- 过河卒(Noip2002)(dp)
过河卒(Noip2002) 时间限制: 1 Sec 内存限制: 128 MB提交: 7 解决: 6[提交][状态][讨论版][命题人:quanxing] 题目描述 棋盘上A点有一个过河卒,需要走到 ...
- 【openjudge】【递推】例3.6 过河卒(Noip2002)
[题目描述] 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1 ...
- 【9307】&【a303】过河卒(NOIP2002)
Time Limit: 10 second Memory Limit: 2 MB 问题描述 如图,A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右. 同时在棋盘上的任一点有一个对方 ...
- LFYZ-OJ ID: 1020 过河卒(NOIP2002)
过河卒 Proble Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃 ...
- noip2002 普及组 过河卒
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为"马拦过 ...
- NOIP2002 过河卒(DFS,DP)
https://www.luogu.org/problem/P1002 题目描述 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如 ...
- AC日记——过河卒 洛谷 1002
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...
- NOIP 2002过河卒 Label:dp
题目描述 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点.例如 ...
- ACM题目————马拦过河卒
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...
随机推荐
- Hudson 打包部署到Was上特别慢
一.找问题点 1.打包很快,到部署很慢 2.部署到其他was一样很慢 二.解决 经过寻找,网上找出以下一段话: 问题出在web.xml,web.xml中的版本信息不对,要根据你的servlet版本和运 ...
- View 常用方法
id layout_width layout_height layout_margin.layout_marginTop minWidth minHeight background layout_gr ...
- 公告栏添加时钟——利用canvas画出一个时钟
前言 最近在学习HTML5标签,学到Canvas,觉得很有趣.便在慕课网找了个demo练手.就是Canvas时钟. 对于canvas,w3shcool上是这么描述的: HTML5 <canvas ...
- java链接JDBC中的?问题
String sql = "select * from student where name= ?"; PreparedStatement pst = conn.prepareSt ...
- TCP/IP中的四元组、五元组、七元组
四元组:源IP地址.目的IP地址.源端口.目的端口 五元组:源IP地址.目的IP地址.源端口.目的端口.传输层协议 七元组:源IP地址.目的IP地址.源端口.目的端口.传输层协议,服务类型以及接口索引
- 数据库(mysql)
一.left join right join inner join left join(左连接),在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录. right join(右 ...
- linux服务器搭建
centos7 java web项目环境搭配 2018年07月19日 17:20:21 阅读数:25 首先进行系统安装,此处不进行详细介绍,自行百度安装 一.配置ip地址信息 1.进入/etc/sys ...
- php的ob缓存详解
前言引入 先看下面的代码: 这个代码,每次输出后都有sleep(1),表示程序执行暂定一秒,想象中浏览器应该是每隔1s钟,逐渐显示1到5的,然后事实情况确不是,浏览器访问的时候,等了5s种后,页面上一 ...
- go语言中的函数
package main; import "fmt" func main() { a, b, c := A(1, 2, 3); fmt.Println(a, b, c); //调用 ...
- jquery ajax 中实现给变量赋值
我们在用JQuery的Ajax从后台提取数据后想把它赋值给全局变量,但是却怎么都赋不进,为什么呢? 原因其实很简单,我们用的Ajax是异步操作,也就是说在你赋值的时候数据还没提取出来,你当然赋不进去, ...