1314:【例3.6】过河卒(Noip2002)

#include
#include
#include
#include
using namespace std;
long long a[30][30];
int g[30][30];
int u[8][2]={{2,1},{1,2},{2,-1},{1,-2},{-2,-1},{-1,-2},{-2,1},{-1,2}};
int main()
{
    memset(g,0,sizeof(g));
    int n,m,cx,cy,i,j,x,y;
    scanf("%d%d",&m,&n);
    scanf("%d%d",&x,&y);
    g[x][y]=1;
    a[x][y]=0;
    for(i=0;i<=7;i++)
    {
        cx=x+u[i][0];
        cy=y+u[i][1];
        if(cx>=0&&cx<=m&&cy>=0&&cy<=n)
        {
            g[cx][cy]=1;
            a[cx][cy]=0;
        }
    }
    a[0][0]=0;
    for(i=0;i<=m;i++)
    {
        if(g[i][0]==1)
        {
            while(i<=m)
            {
                a[i][0]=0;
                i++;
            }
        }
        else a[i][0]=1;
    }
    for(i=0;i<=n;i++)
    {
        if(g[0][i]==1)
        {
            while(i<=n)
            {
                a[0][i]=0;
                i++;
            }
        }
        else a[0][i]=1;
    }

    for(i=1;i<=m;i++)
    {
        for(j=1;j<=n;j++)
        {
            if(g[i][j]==0)
                a[i][j]=a[i-1][j]+a[i][j-1];
        }
    }
    cout<     return 0;
}

你可能感兴趣的:(1314:【例3.6】过河卒(Noip2002))