谢谢各位大佬们,3..4点wa了,实在搞不明白哪里错误
查看原帖
谢谢各位大佬们,3..4点wa了,实在搞不明白哪里错误
183990
隋乐珉楼主2020/11/24 23:46
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
int mx,my,bx,by;
 int n,m;
int xx[10]={0,2,1,-1,-2,-2,-1,1,2};
int yy[10]={0,1,2,2,1,-1,-2,-2,-1};
int f[45][45];
bool check(int x,int y)
{
	for(int i=0;i<9;i++)
	{
		int vx=mx+xx[i];
		int vy=my+yy[i];
		
		if(vx<0 || vx>n || vy<0 || vy>m) continue;
		if(x==vx && y==vy) return false;
	}
	return  true;
}
int dfs(int x,int y)
{

	if(x<0 || x>n || y<0 || y>m) return 0;

	if(check(x,y)==false) {
	
	return f[x][y]=0;
	}
	if(f[x][y]!=-1) return f[x][y];	
	
	return f[x][y]=dfs(x-1,y)+dfs(x,y-1);
}
 main()
{
	cin>>bx>>by>>mx>>my;
	n=bx,m=by;
	memset(f,-1,sizeof(f));
	for(int i=0;i<=n;i++)
	f[i][0]=1;
	for(int i=0;i<=m;i++)
	f[0][m]=1;
	cout<<dfs(bx,by);
	return 0;
}
2020/11/24 23:46
加载中...