社区讨论

站外题,玄关,急!

题目总版参与者 4已保存回复 14

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
14 条
当前快照
1 份
快照标识符
@lv0xwxpp
此快照首次捕获于
2024/04/15 20:37
2 年前
此快照最后确认于
2024/04/15 22:50
2 年前
查看原帖
1084.【搜索与回溯算法】马的走法
时间限制: 1 s
空间限制: 256MB
题目描述
在5x5的棋盘上,给定一位置,输出马回到原点有多少种不同的方案。
注意:马走的每一步必须在棋盘上,走斜日,如下图:
注意:棋盘的左上角坐标为 (1,1)。
输入
给定一位置:x y,中间有一空格隔开。
输出
输出可以回到原点的方案总数。
样例数据
输入
1 1
输出
61424

主要我不知道搜索结束条件是什么

me的代码

CPP
#include <cstdio>
using namespace std;
int dx[8] = {-2, -2, -1, 1, 2, 2, 1, -1}, dy[8] = {-1, 1, 2, 2, 1, -1, -2, -2};
int p, q, ans, first, a[105][105], vis[105][105];
void search (int, int);
int main()
{
	scanf ("%d%d", &p, &q);
	vis[p][q] = 1;
	search (p, q);
	printf ("%d", ans);
	return 0;
}
void search (int x, int y)
{
	if ()//这里该怎么写?
	else
	{
		for (int i = 0; i <= 7; i++)
		{
			int xx = x + dx[i];
			int yy = y + dy[i];
			if (xx >= 1 && xx <= 5 && yy >= 1 && yy <= 5 && vis[xx][yy] == 0)
			{
				vis[xx][yy] = 1;
				search (xx, yy);
				vis[xx][yy] = 0;
			}
		}
	}
}

在线等,挺急的!

回复

14 条回复,欢迎继续交流。

正在加载回复...