社区讨论

求.助.蒟蒻的求助

学术版参与者 3已保存回复 10

讨论操作

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

当前回复
10 条
当前快照
1 份
快照标识符
@mi7xca6s
此快照首次捕获于
2025/11/21 05:09
4 个月前
此快照最后确认于
2025/11/21 05:09
4 个月前
查看原帖
象棋中的“马”走“日”,如果一匹马只往右边走,那我们就说它是匹好马。如下图所示,现在我们需要将一匹马从左下角(0,0)走到右上角(4,8),请你编程输出一匹好马能走的所有路线,以及路线总数。 路线输出格式:0,0->2,1->3,3->1,4->3,5->2,7->4,8
CPP
#include<bits/stdc++.h>
using namespace std;
int a[100][100],t;
int m[4]={2,1,-1,-2},n[4]={1,2,2,1};
void SC(int ans)
{
	{
		ans++;
		for(int i=1;i<ans-1;i++)
			cout<<a[i][1]<<","<<a[i][2]<<"->";
		cout<<a[ans-1][1]<<","<<a[ans-1][2];
		cout<<endl;
	}
}
void dfs(int dfs_a)
{
	for(int j=0;j<=3;j++)
	{
		if(a[dfs_a-1][1]+m[j]>=0&&a[dfs_a-1][1]+m[j]<=4&&a[dfs_a-1][2]+n[j]>=0&&a[dfs_a-1][2]+n[j]<=8)
		{
			a[dfs_a][1]=a[dfs_a-1][1]+m[j];
			a[dfs_a][2]=a[dfs_a-1][2]+n[j];
			if(a[dfs_a][1]==4&&a[dfs_a][2]==8)SC(dfs_a);
			else dfs(dfs_a+1);
		}
	}
}
int main()
{
	a[1][1]=0;
	a[1][2]=0;
	int sum=2;
	dfs(sum);
}
求解 可以用打表

回复

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

正在加载回复...