题解 | #[NOIP2002 普及组] 过河卒#

[NOIP2002 普及组] 过河卒

https://www.nowcoder.com/practice/cc1a9bc523a24716a117b438a1dc5706

#include <iostream>
using namespace std;

// b点坐标和马的坐标
int xb, yb, xh, yh;
// h为能否走的表示
long long h[30][30] = {0}, f[30][30] = {0};

int main() {
    cin >> xb >> yb >> xh >> yh;
    // 防止马在边界
    xb += 2, yb += 2, xh += 2, yh += 2;
    // 马脚和马的位置设为1 不可走
    h[xh][yh] = 1;
    h[xh + 1][yh + 2] = 1;
    h[xh - 1][yh - 2] = 1;
    h[xh + 2][yh + 1] = 1;
    h[xh + 1][yh - 2] = 1;
    h[xh - 1][yh + 2] = 1;
    h[xh + 2][yh - 1] = 1;
    h[xh - 2][yh + 1] = 1;
    h[xh - 2][yh - 1] = 1;

    // 初始化行列边界步数为1 因为边界没有别的地方可以到达
    for(int i = 2; i < 30; i ++){
        f[2][i] = f[i][2] = 1;
    }
    f[1][2] = 1;
    for(int i = 2; i <= xb; i ++){
        for(int j = 2; j <= yb; j ++){
            if(h[i][j] == 1){
                // 无法走 跳过
                f[i][j] = 0;
                continue;
            }
            f[i][j] = f[i - 1][j] + f[i][j - 1];
        }
    }
    cout << f[xb][yb] << endl;
    return 0;
}

全部评论

相关推荐

11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 18:54
点赞 评论 收藏
分享
11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务