洛谷 P1002

\(洛谷P1002\)

link

一个简单的DP题目,状态转移公式 \(dp[i][j]=dp[i-1][j]+dp[i][j-1]\),注意马能到达的地方和马现在的地方,\(dp = 0\)

#include<bits/stdc++.h>
using namespace std;

bool vis[25][25];
long long step[25][25];

inline int r()
{
	int q, x = 1;
	char ch;
	while (! isdigit(ch = getchar())) if (ch == '-') x = -1;
	q = ch ^ '0';
	while (isdigit(ch = getchar())) q = (q<<3) + (q<<1) + (ch^'0');
	return q;
}

int main() {
	step[1][1]=1;
	int n,m,x,y;
	n=r(); m=r(); x=r(); y=r();
	n++;
	m++;
	x++;
	y++;
	vis[x][y]=1;
	vis[x-2][y-1]=1;
	vis[x-2][y+1]=1;
	vis[x+2][y-1]=1;
	vis[x+2][y+1]=1;
	vis[x-1][y+2]=1;
	vis[x-1][y-2]=1;
	vis[x+1][y+2]=1;
	vis[x+1][y-2]=1;
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			if((i!=1||j!=1)&&!vis[i][j])
				step[i][j]=step[i-1][j]+step[i][j-1];
	cout<<step[n][m];
	return 0;
}

posted @ 2021-12-25 16:03  yhbqwq  阅读(21)  评论(0编辑  收藏  举报