蒟蒻求助,本地能过,oj全RE

回复帖子

@仙女杰瑞 2020-08-31 03:06 回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int b[25][25],end1,end2,row[8]={1,1,-1,-1,2,2,-2,-2},column[8]={2,-2,2,-2,1,-1,1,-1};
long long a[25];
int max(int x,int y)
{
    if(x>=y)return x;
    else return y;
}
int main()
{
    memset(a,0,sizeof(a));//以滚动覆盖的方式标记到当前位置的路线数 
    memset(a,0,sizeof(b));//标记马能拦截的位置 
    int horse1,horse2;
    scanf("%d%d%d%d",&end1,&end2,&horse1,&horse2);
    b[horse1][horse2]=-1;
    for(int i=0;i<8;i++)
    {
    if(horse1+row[i]>=0&&horse2+column[i]>=0&&horse1+row[i]<=end1&&horse2+column[i]<=end2)
    b[horse1+row[i]][horse2+column[i]]=1;
    }
    for(int i=0;i<=end1;i++)
    {
        for(int j=0;j<=end2;j++)
        {
            if(b[i][j])a[j]=0;//若当前位置被马拦截,标记路线为0;
            else if(i==0||j==0)
            {
                if(i==0&&j==0)a[j]=1;//若在(0,0),标记路线为1
                else if(i==0)a[j]=a[j-1];//若在第一行,标记为前一列的路线数;若第一列,保持等于上一行的路线数;
            }
            else a[j]+=a[j-1];//否则路线数等于当前列加前一列 
        }
    }
    printf("%lld",a[end2]);
    return 0;
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。