递推60分
查看原帖
递推60分
393995
一道阳光楼主2021/10/17 10:23

RT,最终得分为60分 第3、4测试点WA

#include <bits/stdc++.h>
using namespace std;
const int maxn=20;
typedef long long ll;
ll cx[9]={0,-1,-2,1,-1,1,-2,2,2};
ll cy[9]={0,-2,-1,-2,2,2,1,-1,1};
ll n,m,hx,hy;
ll f[maxn+1][maxn+1];
bool cb[maxn+1][maxn+1];
int main(){
    memset(cb,true,sizeof(cb));
    cin>>n>>m>>hx>>hy;
    for(ll i=1;i<=20;i++)
        f[0][i]=f[i][0]=1;
    for(ll i=0;i<=8;i++){
        cx[i]+=hx;
        cy[i]+=hy;
        if(cx[i]<0||cx[i]>20||cy[i]<0||cy[i]>20){
            cx[i]=hx;
            cy[i]=hy;
        }
        cb[cx[i]][cy[i]]=false;
        f[cx[i]][cy[i]]=0;
        if(cx[i]==0&&cy[i]==0){
            cout<<0<<endl;
            return 0;
        }
    }
    for(ll i=1;i<=n;i++)
        for(ll j=1;j<=m;j++)
            if(cb[i][j]!=false)
                f[i][j]=f[i-1][j]+f[i][j-1];
    cout<<f[n][m]<<endl;
    return 0;
}

2021/10/17 10:23
加载中...