过河卒(NOIP2002)
来源:互联网 发布:旅游数据分析报告 编辑:程序博客网 时间:2024/05/29 15:08
题目链接:过河卒
直接模拟?会T掉60分。
所以我们可以采用递推,怎么想到的?
因为卒子只能向下或向右走,所以走到一个点的方法数,等于走到它上面点的方法数加上走到它左边点的方法数,这样就可以地推了。
给代码:
#include<bits/stdc++.h>#ifdef WIN32#define LL "%I64d"#else#define LL "%lld"#endifusing 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处:如果在,就把这一点清零,如果初始化的时候,那就直接退出,因为后面的点是走不到的。我就是因为初始化为判断控制点而丢了一部分的分。
阅读全文
0 0
- NOIP2002-过河卒题解
- 过河卒(NOIP2002)
- NOIP2002过河卒
- 马拦过河卒(NOIP2002)
- NOIP2002-PJ-4 过河卒
- 【9307】&【a303】过河卒(NOIP2002)
- [DP]NOIP2002/FJSDFZOJ 1081 过河卒
- ACM 78. [NOIP2002] 过河卒(dp)
- NOIP2002-----马拦过河卒【经典搜索】
- NOIP2002-过河卒—经典的dp思想
- noip2002 过河卒 (动态规划求路径总数)
- |Vijos|NOIP2002|动态规划|P1121 马拦过河卒
- [NOIP2002]马拦过河卒——深搜
- 过河卒
- 过河卒
- 过河卒
- 过河卒
- 过河卒
- jQuery click事件多次触发
- Hdu 6129 Just do it【杨辉三角、规律】
- 跳跃表
- 逆元相关
- 快乐学习(3)
- 过河卒(NOIP2002)
- HDU-2188-悼念512汶川大地震遇难同胞——选拔志愿者 【巴什博弈】
- 二维最小乘积生成树
- 定时打印
- JAVA输入一串数字,转换成汉字显示
- mysql索引总结----mysql 索引类型以及创建
- 2017 Multi-University Training Contest
- 函数防抖和节流
- Class.forName()用法详解