蒟蒻求助,60分

回复帖子

@十九円— 2021-07-21 19:32 回复
#include <bits/stdc++.h>
using namespace std;
long long a, b, m, n;
int dir[9][2] = {{0,0},{2,1},{2,-1},{-2,1},{-2,-1},{1,2},{1,-2},{-1,2},{-1,-2}};
bool used[15][15];
int f(int x,int y) 
{ 
    if(used[x][y]) 
    return 0;
    if(x==0 && y==0) 
    return 1;
    if(x==0)
    return f(x,y-1);
    if(y==0) 
    return f(x-1, y);
    int tmp=0;
    tmp+=f(x-1,y);
    tmp+=f(x,y-1); 
    return tmp;
} 
int main()
{
    cin>>m>>n>>a>>b;
    for(int i=0;i<=8;i++)
    {
        int nx=a+dir[i][0],ny=b+dir[i][1];
        if(nx>=0&&nx<=m&&ny>=0&&ny<=n)
            used[nx][ny]=true;
    }
    cout<<f(m,n);
    return 0;
}
@lmyedison 2021-08-02 11:52 回复 举报

麻烦关注一下,你的文采很好,我是"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;
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



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