局若求助
  • 板块灌水区
  • 楼主kuakuafor1
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/24 10:49
  • 上次更新2024/7/24 11:39:43
查看原帖
局若求助
982450
kuakuafor1楼主2024/7/24 10:49

dx,dy有什么功能?为什么要赋值成这样?

#include<bits/stdc++.h>
using namespace std;
const int dx[] = {0, 1, 1, -1, -1, 2, 2, -2, -2};
const int dy[] = {0, 2, -2, 2, -2, 1, -1, 1, -1};
int uafol[3305][3305], n, m, mx, my;
int dfs(int x, int y) {
	if (x < 1 || y < 1)return 0;
	if (x == 1 && y == 1)return uafol[x][y] = 1;
	if (uafol[x][y] != -1)return uafol[x][y];
	return uafol[x][y] = dfs(x - 1, y) + dfs(x, y - 1);
}
signed main() {
	cin >> n >> m >> mx >> my;
	n++;
	m++;
	mx++;
	my++;
	memset(uafol, -1, sizeof(uafol));
	for (int i = 0; i <= 8; i++) {
		int nx = mx + dx[i];
		int ny = my + dy[i];
		if (nx >= 1 && ny >= 1)
			uafol[nx][ny] = 0;
	}
	cout << dfs(n, m);
	return 0;
}
2024/7/24 10:49
加载中...