一个也过不去

回复帖子

@Anna黛娜 2021-07-13 16:20 回复

求助

#include<iostream>
using namespace std;
int n,m,a,b;
int s[21][21];
int x[8]={1,2,-1,-2,1,2,-1,-2};
int y[8]={2,1,-2,-1,-2,-1,2,1};
int main()
{
    cin>>a>>b>>n>>m;
    a++;
    b++;
    n++;
    m++;
    s[1][1]=1;
    for(int i=0;i<=7;++i)
    {
        if(a+x[i]>=1&&a+x[i]<=n&&b+y[i]>=1&&b+y[i]<=m)
            s[a+x[i]][b+y[i]]=-1;
    }
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            if(s[i][j]==-1)s[i][j]=0;
            else if(s[i-1][j]==-1&&s[i][j-1]==-1)s[i][j]=0;
            else if(s[i-1][j]==-1)s[i][j]=s[i][j-1];
            else if(s[i][j-1]==-1)s[i][j]=s[i-1][j];
            else s[i][j]=s[i][j-1]+s[i-1][j];
        }
    }
    cout<<s[n][m];
    return 0;
}
@lmyedison 2021-08-02 11:45 回复 举报

呵呵,你好,我关注了你,希望你也能关注下我!!!,还有,你的排名是6.20k对吧,我的也是6.20k,所以我在这把代码奉上,保满分,我的名叫"lmyedison",关注一下。

#include<bits/stdc++.h>
using namespace std;
int dx[8]={-2,-1,1,2,2,1,-1,-2};
int dy[8]={1,2,2,1,-1,-2,-2,-1};
int n,m,mx,my;
long long dp[25][25];
bool f[25][25];
int main()
{
    cin>>m>>n>>mx>>my;
    f[mx][my]=true;
    for(int i=0;i<=7;i++)
    {
        int nx=mx+dx[i];
        int ny=my+dy[i];
        if(nx>=0&&nx<=n&&ny>=0&&ny<=m)
            f[nx][ny]=true; 
    }
    for(int i=0;i<=m;i++)
    {
        if(f[0][i]==true)
            break;
        dp[0][i]=1;
    }
    for(int i=0;i<=n;i++)
    {
        if(f[i][0]==true)
            break;
        dp[i][0]=1;
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(f[i][j]==true)
                dp[i][j]=0;
            else
                dp[i][j]=dp[i-1][j]+dp[i][j-1];
    cout<<dp[n][m];
    return 0;
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



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