P1002 过河卒

注意将坐标整体偏移从(1,1)开始

#include<iostream>
using namespace std;
const int N=25;
typedef long long LL;
typedef pair<int,int> PII;
LL f[N][N];
int dx[]={0,-2,-1,1,2,2,1,-1,-2};
int dy[]={0,1,2,2,1,-1,-2,-2,-1};
bool vis[N][N];
PII b,m;

int main()
{
	cin>>b.first>>b.second;
	b.first++,b.second++;
	cin>>m.first>>m.second;
	m.first++,m.second++;


	for(int i=0;i<9;i++)
	{
		int a=m.first+dx[i],b=m.second+dy[i];
		vis[a][b]=1;
	}

	f[1][1]=1;
	for(int i=1;i<=b.first;i++)
		for(int j=1;j<=b.second;j++)
		{
			if(vis[i][j]) continue;
			f[i][j]+=f[i-1][j]+f[i][j-1];
		}

	cout<<f[b.first][b.second]<<endl;

}

posted @ 2020-08-30 18:03  Dazzling!  阅读(139)  评论(0编辑  收藏  举报