• AC日记——过河卒 洛谷 1002


    题目描述

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

    棋盘用坐标表示,A点(0, 0)、B点(n, m)(n, m为不超过20的整数),同样马的位置坐标是需要给出的。

    现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。

    输入输出格式

    输入格式:

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

    输出格式:

    一个数据,表示所有的路径条数。

    输入输出样例

    输入样例#1:

    6 6 3 3
    输出样例#1:

    6

    说明

    结果可能很大!

    思路:

      搜索超时稳稳的

      递推ac稳稳的

    来,上代码:

    #include<cstdio>
    
    using namespace std;
    
    const int dx[9]={0,-2,-1,1,2,2,1,-1,-2};
    const int dy[9]={0,1,2,2,1,-1,-2,-2,-1};
    
    long long int dp[50][50];
    
    int n,m,hx,hy;
    
    bool map[50][50];
    
    int main()
    {
        scanf("%d%d%d%d",&n,&m,&hx,&hy);
        for(int i=1;i<=8;i++)
        {
            if(dx[i]+hx+1>0&&dy[i]+hy+1>0)
            {
                map[dx[i]+hx+1][dy[i]+hy+1]=true;
            }
        }
        map[hx+1][hy+1]=true;
        dp[1][1]=1;
        for(int i=1;i<=n+1;i++)
        {
            for(int j=1;j<=m+1;j++)
            {
                if(!map[i][j]) dp[i][j]+=dp[i-1][j]+dp[i][j-1];
            }
        }
        printf("%lld
    ",dp[n+1][m+1]);
        return 0;
    }
  • 相关阅读:
    结巴分词
    Python如何将RGB图像转换为Pytho灰度图像?
    多套方案来提高python web框架的并发处理能力
    python使用web.py开发httpserver,解决post请求跨域问题
    关于socket知识整理
    SQL注入实验
    什么是内存(一):存储器层次结构
    内存剖析2
    JDBC的事务处理 JDBC事务处理 JDBC教程
    SQL注入绕过的技巧总结
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6056794.html
Copyright © 2020-2023  润新知