60分求助,测试点3,4爆wa,代码上写了注释,我不清楚我哪里考虑错了
查看原帖
60分求助,测试点3,4爆wa,代码上写了注释,我不清楚我哪里考虑错了
575009
tierzero楼主2022/3/2 16:26
#include <bits/stdc++.h>
#define MAXN int(2e2+2)
#define MARK -9
using namespace std;
typedef long long LL;
#define f(i,a,b) for(int i=a;i<=b;i++)
#define f2(i,a,b) for(int i=a;i>=b;i--)
LL xh,yh,xb,yb,ls[MAXN][MAXN];
int main(){
    cin>>xb>>yb>>xh>>yh;
    // 把数组全部初始化为0
    fill(ls[0],ls[0]+MAXN*MAXN,0);
    //把第一行和第一列先初始化为1
    f(i,0,xb) ls[i][0]=1;
    f(j,0,yb) ls[0][j]=1;
    //把马的位置标记成mark=-9
    f(i,0,xb){
        f(j,0,yb){
            if(pow(abs(i-xh),2)+pow(abs(j-yh),2)==5) ls[i][j]=MARK;
        }
    }
    ls[xh][yh]=MARK;
    // 如果(i,j)是马的位置就continue;
    // 如果(i,j-1)不是mark,(i,j)就加上;
    // 如果(i-1,j)不是mark,(i,j)就加上
    f(i,1,xb){
        f(j,1,yb){
            if(ls[i][j]==MARK) continue;
            if(ls[i][j-1]!=MARK) ls[i][j]+=ls[i][j-1];
            if(ls[i-1][j]!=MARK) ls[i][j]+=ls[i-1][j];
        }
    }
    //打印B(xb,yb)的值
    cout<<ls[xb][yb];
    /* f(i,0,xb){
        f(j,0,yb){
            cout<<ls[i][j]<<" ";
        }
        cout<<endl;
    }cout<<endl; */
    
    return 0;
}


2022/3/2 16:26
加载中...