首页 > 其他 > 详细

洛谷1002 过河卒

时间:2018-12-05 21:33:39      阅读:163      评论:0      收藏:0      [点我收藏+]

原题链接

\(DP\)水题。
还有哪个zz打上去的高精标签,害我还敲了一波高精。。

#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
const int N = 23;
bool v[N][N];
int mo_x[8] = { 1, 2, 2, 1, -1, -2, -2, -1 }, mo_y[8] = { 2, 1, -1, -2, -2, -1, 1, 2 };
ll f[N][N];
int main()
{
    int i, j, n, m, x, y, xx, yy;
    scanf("%d%d%d%d", &n, &m, &x, &y);
    for (n++, m++, x++, y++, i = 0; i < 8; i++)
    {
        xx = x + mo_x[i];
        yy = y + mo_y[i];
        if (xx > 0 && xx <= n && yy > 0 && yy <= m)
            v[xx][yy] = 1;
    }
    v[x][y] = 1;
    f[1][1] = 1;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m; j++)
            if (!v[i][j])
            {
                if (i - 1 > 0 && !v[i - 1][j])
                    f[i][j] = f[i][j] + f[i - 1][j];
                if (j - 1 > 0 && !v[i][j - 1])
                    f[i][j] = f[i][j] + f[i][j - 1];
                if (i + 1 <= n && !v[i + 1][j])
                    f[i][j] = f[i][j] + f[i + 1][j];
                if (j + 1 <= m && !v[i][j + 1])
                    f[i][j] = f[i][j] + f[i][j + 1];
            }
    printf("%lld", f[n][m]);
    return 0;
}

洛谷1002 过河卒

原文:https://www.cnblogs.com/Iowa-Battleship/p/10073427.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!