萌新是真的不太懂,求大佬
查看原帖
萌新是真的不太懂,求大佬
681120
LMS_yr楼主2022/2/25 18:12

我是想着给每一个地方赋值一个1,然后马和他的控制点变成0,这样双重循环的时候就可以跳过,而且可以直接用状态转移方程,但是不理解为什么错,还有两个re。

#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int N=25;
const int horx[]={1,1,2,2,-1,-1,-2,-2};
const int hory[]={2,-2,-1,1,2,-2,1,-1};

ll f[N][N];
int main()
{
    int mx,my,bx,by;
    cin>>bx>>by>>mx>>my;
    f[0][1]=1;
    f[1][0]=1;
    for(int i=0;i<=bx;i++) 
        for(int j=0;j<=by;j++) 
            f[i][j]=1;
    f[mx][my]=0;
    for(int i=0;i<8;i++) f[mx+horx[i]][my+hory[i]]=0;
    for(int i=0;i<=bx;i++)
        for(int j=0;j<=by;j++)
        {
            if(f[i][j]==0) continue;
            if(i==0) 
            {
                f[0][j]=f[0][j-1];
                continue;
            }
            if(j==0&&i!=0)
            {
                f[i][j]=f[i-1][j];
                continue;
            }
            if(i==0&&j==0) continue;
            f[i][j]=f[i-1][j]+f[i][j-1];
        }
    cout<<f[bx][by];
    return 0;
}
2022/2/25 18:12
加载中...