40分求大佬帮忙看看
查看原帖
40分求大佬帮忙看看
979902
AveryJH楼主2023/3/28 17:47
#include<iostream>
#include<cmath>
using namespace std;
//存储已知路径数
long long int memory[20][20];

long long int step(int x1 ,int y1 , int x2 ,int y2 ){
    if(x1 == 0 || y1 == 0){
        memory[x1][y1]=1;
        return 1;
    }
    //马的看守范围
    else if(abs(x2-x1)+abs(y2-y1)==3 && x1!=x2 &&y1!=y2){
        memory[x1][y1]=0;
        return 0;
    }
    //马的位置
    else if(x1==x2&&y1==y2){
        memory[x1][y1]=0;
        return 0;
    }
    if(memory[x1][y1] != -1){
        return memory[x1][y1];
    }
    long long int result = step(x1-1,y1,x2,y2)+step(x1,y1-1,x2,y2);
    memory[x1][y1]=result;
    return result;
}


int main(){
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    //a,b  b pos
    //c,d ma pos
    //初始化二维数组
    for(int i=0;i<20;i++){
        for(int j=0;j<20;j++){
            memory[i][j]=-1;
        }
    }
    //cout<<a<<b<<c<<d<<endl;
    cout<<step(a,b,c,d)<<endl;
    return 0;
}
2023/3/28 17:47
加载中...