zoukankan      html  css  js  c++  java
  • 洛谷-P1002 过河卒

    洛谷-P1002 过河卒

    原题链接:https://www.luogu.com.cn/problem/P1002


    题目描述

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

    棋盘用坐标表示,(A)((0, 0))(B)((n, m)),同样马的位置坐标是需要给出的。

    img

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

    输入格式

    一行四个正整数,分别表示 (B) 点坐标和马的坐标。

    输出格式

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

    输入输出样例

    输入 #1

    6 6 3 3
    

    输出 #1

    6
    

    说明/提示

    对于 (100 \%) 的数据,(1 le n, m le 20)(0 le) 马的坐标 (le 20)

    C++代码

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    int main() {
        int n, m, u, v;
        cin >> n >> m >> u >> v;
        long long int a[n+1][m+1];
        for (int i=0; i<=n; ++i)
            for (int j=0; j<=m; ++j)
                if (i == 0 && j == 0)
                    a[i][j] = 1;
                else if (i==u&&j==v || abs(i-u)==1&&abs(j-v)==2 || abs(i-u)==2&&abs(j-v)==1)
                    a[i][j] = 0;
                else if (j == 0)
                    a[i][0] = a[i-1][0];
                else if (i == 0)
                    a[0][j] = a[0][j-1];
                else
                    a[i][j] = a[i-1][j] + a[i][j-1];
        cout << a[n][m] << endl;
        return 0;
    }
    
  • 相关阅读:
    第二次作业
    第五次作业
    第四次作业
    第三次作业
    第二次作业
    第三次作业
    第二次作业
    第二次作业
    gravity
    card
  • 原文地址:https://www.cnblogs.com/yuzec/p/14107733.html
Copyright © 2011-2022 走看看