社区
数据结构与算法
帖子详情
国际象棋,马 极小满覆盖。。。。求解
foreverwht
2009-05-07 01:48:19
最近碰到一个题目,与马的遍历类似。。但不太懂 有能吧程序主体做出来给我看的吗。。谢谢。。。。。题目如下:
在8*8国际象棋棋盘上。。。如果放置若干个马后,使得整个棋盘的任意控位置上所放置的棋子都能被马吃掉,就称这组放置为一个满覆盖,若去掉满覆盖的任意一个棋子都会使他不再是满覆盖,就称为一组极小慢覆盖;程序要求如下:
1 求解一个极小满覆盖
2程序能方便移植到其他规格棋盘上、
...全文
808
13
打赏
收藏
国际象棋,马 极小满覆盖。。。。求解
最近碰到一个题目,与马的遍历类似。。但不太懂 有能吧程序主体做出来给我看的吗。。谢谢。。。。。题目如下: 在8*8国际象棋棋盘上。。。如果放置若干个马后,使得整个棋盘的任意控位置上所放置的棋子都能被马吃掉,就称这组放置为一个满覆盖,若去掉满覆盖的任意一个棋子都会使他不再是满覆盖,就称为一组极小慢覆盖;程序要求如下: 1 求解一个极小满覆盖 2程序能方便移植到其他规格棋盘上、
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
foreverwht
2009-05-10
打赏
举报
回复
最近几天学校网络问题没上,自己也在调试程序 感觉和8楼思路有点像,但可能个人编程能力有限,所以有了思路后程序编的还是有一堆问题,还是感谢大家哈~偶是新手。。。分不多。。见谅。。。。
PS:如果能有人给我一个大概的函数主体就好了。。。- -!
volant_hoo
2009-05-09
打赏
举报
回复
感觉楼主说的应该是马一步能吃掉,而不是多步才能吃掉
多步很简单,大于3*4的放一个马就能吃完了,没有意义
中国象棋和国际象棋中马差不多,就是多了个别马腿,还有就是棋盘大小有些差别
呵呵,考虑别马腿的话这题难很多,如果考虑使用最少的马覆盖,也有一定的难度
绿色夹克衫
2009-05-08
打赏
举报
回复
这样随便选点恐怕得不到最优解,可以转化为拼图问题,先从4个角上的点开始求解
[Quote=引用 3 楼 joanlynnlove 的回复:]
给定了棋盘之后。
先随便放一只马,对棋盘进行宽搜遍历,能到达的点都不用放马了。
在剩下不能到达的点中任选一个点放下一个马,同样宽搜遍历。
这样一直进行下去,直到棋盘点全部能到达。
所需要的马数就是最小的马数了。
[/Quote]
acdbxzyw
2009-05-08
打赏
举报
回复
我还以为走法是一样的呢。
丢人丢大了。
acdbxzyw
2009-05-08
打赏
举报
回复
[Quote=引用 8 楼 litaoye 的回复:]
宽搜的结果并不能保证任何两只马必然不会踩到同一点上,
实际上最优解中也会存在2匹马踩到同一点的可能,一个马可以控制的点最多有8个。
引用 7 楼 joanlynnlove 的回复:
引用 6 楼 litaoye 的回复:
这样随便选点恐怕得不到最优解,可以转化为拼图问题,先从4个角上的点开始求解
我认为必然得到最优解。
宽搜保证任何两只马必然不会踩到同一点上,否则一只马就能办到两只马的事了。
也就是说每只马都只能踩到自己…
[/Quote]
这样。。。
我不会下国际象棋,我是按中国象棋的想法做的。
不要理我。
volant_hoo
2009-05-08
打赏
举报
回复
如果只求一个解很好办:先全部放马,然后从一个马(可以指定一个,也可以随机)开始,把所有能直接吃掉的干掉;然后对下一个没被吃掉马做上操作,直到所有的马都遍历或者被吃掉。
呵呵,不是最优解,最优解等楼下的。
绿色夹克衫
2009-05-08
打赏
举报
回复
宽搜的结果并不能保证任何两只马必然不会踩到同一点上,
实际上最优解中也会存在2匹马踩到同一点的可能,一个马可以控制的点最多有8个。
[Quote=引用 7 楼 joanlynnlove 的回复:]
引用 6 楼 litaoye 的回复:
这样随便选点恐怕得不到最优解,可以转化为拼图问题,先从4个角上的点开始求解
我认为必然得到最优解。
宽搜保证任何两只马必然不会踩到同一点上,否则一只马就能办到两只马的事了。
也就是说每只马都只能踩到自己的一部分点,拼起来才会是整个棋盘。
[/Quote]
acdbxzyw
2009-05-08
打赏
举报
回复
[Quote=引用 6 楼 litaoye 的回复:]
这样随便选点恐怕得不到最优解,可以转化为拼图问题,先从4个角上的点开始求解
[/Quote]
我认为必然得到最优解。
宽搜保证任何两只马必然不会踩到同一点上,否则一只马就能办到两只马的事了。
也就是说每只马都只能踩到自己的一部分点,拼起来才会是整个棋盘。
fengcman
2009-05-07
打赏
举报
回复
这个问题可以转化为从一个点出发,以一种方式去走,比如马的走法上两步,右一步。经过多次后看是否能回到原点,再统计能回到原点的走过的次数
Linux校园社区
2009-05-07
打赏
举报
回复
[Quote=引用 3 楼 joanlynnlove 的回复:]
给定了棋盘之后。
先随便放一只马,对棋盘进行宽搜遍历,能到达的点都不用放马了。
在剩下不能到达的点中任选一个点放下一个马,同样宽搜遍历。
这样一直进行下去,直到棋盘点全部能到达。
所需要的马数就是最小的马数了。
[/Quote]学习
acdbxzyw
2009-05-07
打赏
举报
回复
给定了棋盘之后。
先随便放一只马,对棋盘进行宽搜遍历,能到达的点都不用放马了。
在剩下不能到达的点中任选一个点放下一个马,同样宽搜遍历。
这样一直进行下去,直到棋盘点全部能到达。
所需要的马数就是最小的马数了。
topplayers
2009-05-07
打赏
举报
回复
[Quote=引用 1 楼 Paradin 的回复:]
没懂意思
觉得一只马就够了
[/Quote]
正方形的棋盘或许可以,如果是其他矩形就不一定了,比如2*3的棋盘,一只马只能吃两个点
Paradin
2009-05-07
打赏
举报
回复
没懂意思
觉得一只马就够了
C#
马
的
极
小满
覆盖
用C#写的
马
的
极
小满
覆盖
问题: 在8×8的
国际象棋
棋盘上,如果在放置若干个
马
以后,使得整个棋盘的任意空位置上所放置的棋子均能被这些
马
吃掉,则称这组...
求解
一个
极
小满
覆盖
,按照矩阵形式给出,用特殊符号表示
马
。
国际象棋
马
互相攻击问题
题解思路:已知一只
马
可以废掉8个位置,那么最优的方法就是让多匹
马
废掉的位置尽量相同就可以了。#include<bits/stdc++.h> using namespace std; typedef long long ll; const int mx = 1e3 + 10; ...
C/C++
马
踏棋盘实现
问题描述:将
马
随机放在
国际象棋
的8×8棋盘Board[0~7][0~7]的某个方格中,
马
按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。 问题
求解
算法简述: 1. 深度优先遍历+回溯法 2. 贪心...
马
踏棋盘问题
将
马
放到
国际象棋
的8*8棋盘上的任意指定方格中,按照“
马
”的走棋规则将“
马
”进行移动,要求每个方格进入且只进入一次,走遍棋盘上的64个方格,将数字1,2,3…,64依次填入一个8*8的方阵。
马
在
国际象棋
中的走法如右图...
C/C++武汉大学计算机学院大作业参考题(25题)[2024-05-28]
大作业参考选题之9:家庭财务小管家 【任务描述】个⼈小管家应用系统给家庭提供了⼀个管理个⼈财务的平台,主要用于对家庭成员收⼊、支出进⾏添加、查询、删除以及打印的操作,使得家庭财务收支状态⼀目了然。...
数据结构与算法
33,025
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章