玄学的过河卒
查看原帖
玄学的过河卒
307483
苏黎世楼主2020/9/28 20:17
#include <iostream>
#include <cstring>
using namespace std;
bool a[30][30];
int d[9][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{0,0},{1,-2},{1,2},{2,-1},{2,1}};
long long f[30][30];
int main()
{
	int b1,b2,m1,m2,i,j;
	cin >> b1 >> b2 >> m1 >> m2;
	
	for(i = 0;i < 9;++i) 
	{
		int x = m1 + d[i][0],y = m2 + d[i][1];
		if(x >= 0 && x <= b1 && y >= 0 && y <= b2) a[x][y] = 1;
	}
	
	for(i = 0;i <= b1; ++i) if( ! a[i][0] ) f[i][0] =  1;
	for(j = 0;j <= b2; ++j) if( ! a[0][j] ) f[0][j] =  1;//边界问题 
	
	for(i = 1;i <= b1; ++i)
	  for(j = 1;j <= b2; ++j)
	  	if(!a[i][j]) f[i][j] = f[i-1][j] + f[i][j-1];//状态转移方程 
	cout << f[b1][b2];
	return 0;
}

错两个点

wtf?

2020/9/28 20:17
加载中...