zstu 2554 过河卒

long long 才能过。。
没啥好说的。。

#include<stdio.h>
#include<string.h>
long long map[25][25];
int main()
{
    int n,m,x,y;
    while(scanf("%d%d%d%d",&n,&m,&x,&y)!=EOF)
    {
        memset(map,0,sizeof(map));
        map[0][0]=1;
        int i;
        for(i=1;i<=n;i++)
        {
            if((x-i)*(x-i)+y*y!=5&&(i!=x||y!=0))
            {
                map[i][0]=map[i-1][0];
            }
        }
        for(i=1;i<=m;i++)
        {
            if(x*x+(y-i)*(y-i)!=5&&(i!=y||x!=0))
            {
                map[0][i]=map[0][i-1];
            }
        }
        for(i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                if((x-i)*(x-i)+(y-j)*(y-j)!=5&&(i!=x||j!=y))
                {
                    map[i][j]=map[i-1][j]+map[i][j-1];
                }
            }
        printf("%lld\n",map[n][m]);
    }
    return 0;
}

你可能感兴趣的:(zstu-dp)