80分求助!!!
查看原帖
80分求助!!!
1000862
Kiksm楼主2023/6/3 14:50
#include<iostream>
using namespace std;
int cls[20][20];
long long gs[20][20];
int by,bx,my,mx;
bool flag(int x,int y);
long long sum(int x,int y);
int main(){
	for(int i=0;i<=19;i++){
		for(int j=0;j<=19;j++){
			gs[i][j]=-1;
		}
	}
	cin>>bx>>by>>mx>>my;
	cls[my][mx]=1;
	if(flag(mx-1,my-2))cls[my-2][mx-1]=1;
	if(flag(mx-2,my-1))cls[my-1][mx-2]=1;
	if(flag(mx-2,my+1))cls[my+1][mx-2]=1;
	if(flag(mx-1,my+2))cls[my+2][mx-1]=1;
	if(flag(mx+1,my+2))cls[my+2][mx+1]=1;
	if(flag(mx+2,my+1))cls[my+1][mx+2]=1;
	if(flag(mx+2,my-1))cls[my-1][mx+2]=1;
	if(flag(mx+1,my-2))cls[my-2][mx+1]=1;
	cout<<sum(0,0);
	
	return 0;
}
bool flag(int x,int y){
	if(x<0||x>bx||y<0||y>by){
		return 0;
	}
	else{
		return 1;
	}
}
long long sum(int x,int y){
	if(cls[y][x]==1||flag(x,y)==0){
		return 0;
	}
	if(x==bx&&y==by){
		return 1;
	}
	if(gs[y][x]!=-1){
		return gs[y][x];
	}
	gs[y][x]=sum(x+1,y)+sum(x,y+1);
	return gs[y][x];
}
2023/6/3 14:50
加载中...