#3#4WA,求助
查看原帖
#3#4WA,求助
352674
liu_yu_hang楼主2020/8/14 16:05
#include<bits/stdc++.h>
using namespace std;
bool b[110][110];
long long a[110][110];
short fx[8]= {2,1,-1,-2,-2,-1,1,2};//坐标x 
short fy[8]= {1,2,2,1,-1,-2,-2,-1};//坐标y 
int main() {
	memset(b,0,sizeof(b)); 
	int n,m,x,y;
	cin>>n>>m>>x>>y; 
	b[x][y]=1;//马点为1。 
	for(int i=0; i<=7; i++) 	if(x+fx[i]>=0&&x+fx[i<=n&&y+fy[i]>=0&&y+fy[i]<=m)
			b[x+fx[i]][y+fy[i]]=1;
	//将对方马控制点设为1
	int i=0;
	while(!b[i][0]&&i<=n) {
		a[i++][0]=1;
	}						//列置1. 
	int j=0;
	while(!b[0][j]&&j<=m) { 
		a[0][j++]=1;
	}						//行置1. 
	//遇到马就停 
	for(int k=1; k<=n; k++)
		for(int u=1; u<=m; u++)
			if(b[k][u]) a[k][u]=0;
			else a[k][u]=a[k-1][u]+a[k][u-1];//套方程。 
	printf("%d",a[n][m]);

	return 0;
}
//非马点:a[i][j]=a[i-1][j]+a[i][j-1];
//马点: a[i][j]=0; 置零就行了。 

2020/8/14 16:05
加载中...