前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >洛谷P1002题解

洛谷P1002题解

作者头像
海天一树
发布2019-03-06 13:29:03
3550
发布2019-03-06 13:29:03
举报
文章被收录于专栏:海天一树海天一树
代码语言:javascript
复制
#include<iostream>
using namespace std;

long long a[30][30]={0},n,m,my,mx;

int main()
{
    cin >> n >> m >> my >> mx;//输入数据

    // 整个棋盘往右往下挪两格,这样马处于原点(挪移后
    // 变成(2,2)点,往左上方跳不会出现数组越界的情况
    n += 2; // n行
    m += 2; // m列
    my += 2;// 马位于第几行
    mx += 2;// 马处于第几列

    for(int r = 2; r <= n; r++) // 共有n+1行
    {
        for(int c = 2; c <= m; c++) // 共有m+1列
        {
            a[r][c] = a[r - 1][c] + a[r][c - 1]; // 左侧的数 + 上方的数
            a[2][2]=1;  // 要初始化为1,若为0后面全是0

            // 马的9个控制点
            a[my][mx]=0;// 马本身的位置
            a[my + 2][mx + 1]=0;
            a[my + 2][mx - 1]=0;
            a[my - 2][mx + 1]=0;
            a[my - 2][mx - 1]=0;
            a[my + 1][mx + 2]=0;
            a[my + 1][mx - 2]=0;
            a[my - 1][mx + 2]=0;
            a[my - 1][mx - 2]=0;
        }
    }

    cout <<a[n][m];

    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信息学竞赛NOIP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档