移动棋子问题(觉得用回溯法)

alen1985 2009-04-06 09:51:52
1.设有2n+2个排成一行的格子,最左边的两个格子是空的,其后的格子一次放入A子和B子:

|空格|空格|A|B|A|B|...................|A|B|

现规定移动规则如下:
每次可将任意两个相邻的棋子移入空格,移动时两子的左右持续不得变动。试按此规则以最少的步骤将
n个A子移到一起,n个B子移到一起,空格的位置可任意。


求各位大侠思路,有源代码最好!
...全文
319 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgq2369 2009-04-13
  • 打赏
  • 举报
回复
N = 4,为5步:
0:OOABABABAB
1:BAAOOBABAB
2:BAAABBOOAB
3:OOAABBBAAB
4:AAAABBBOOB
5:AAAAOOBBBB

N = 5,为6步:
5:AAAAOOBBBBAB
6:AAAAABBBBBOO

N = 6,为8步:
6:AAAAABBBBBOOAB
7:AAAAAOOBBBBBAB
8:AAAAAABBBBBBOO

N = 7,为10步:
8:AAAAAABBBBBBOOAB
9:AAAAAAOOBBBBBBAB
10:AAAAAAABBBBBBBOO

以后没增加1,就需增加2个步骤


N<4时,无解;
N=4时,为5;
N>4时,为2N-4;
绿色夹克衫 2009-04-13
  • 打赏
  • 举报
回复
哦,11楼给出了递推的方法,很不错了!LZ的问题应该解决了。
alen1985 2009-04-13
  • 打赏
  • 举报
回复
各位辛苦了,散分!
xiaocha 2009-04-13
  • 打赏
  • 举报
回复
11楼步骤都写出来了,写成代码很容易,结贴了,给我点分
绿色夹克衫 2009-04-12
  • 打赏
  • 举报
回复
2个不行的话,4个可以么?LZ先个一个4个最一般的解法吧!我们帮你总结一下!

[Quote=引用 9 楼 alen1985 的回复:]
题目是对的,前提是N>=4
[/Quote]
alen1985 2009-04-12
  • 打赏
  • 举报
回复
题目是对的,前提是N>=4
xiaocha 2009-04-12
  • 打赏
  • 举报
回复
题目不对,但有答案,大家有的猜了

帮顶,接分
alen1985 2009-04-12
  • 打赏
  • 举报
回复
步骤是:2n-3(其中n>=4),帮顶散分了!
test4ever 2009-04-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 litaoye 的回复:]
这题似乎无解呀?不知道LZ是不是有啥没说清楚的地方?

00ABAB -> BAA00B 然后呢? -> B0AA0B -> 00AABB 最后一步允许么?
[/Quote]

lz的意思可能是这样的
将设2个0代表一个空格,最左端是
0000ABAB.. ->
00BAA00B... ->
AAB0000BAB.. ->
AAAB000BB0AB.. ->
AAABBB0000AB..

LZ是不是这个意思?



  • 打赏
  • 举报
回复
应该是别版转来的帖子吧~
我也没看懂lz说的规则,如果左右无法互换,那么永远也不可能实现“n个A子移到一起,n个B子移到一起”。

也许是楼主没说清楚吧。象这种问题,一般都是靠搜索来解决问题。
楼主说的回溯是深搜。一般来说,象这种求最优的问题,用宽搜(分支限界)更合适一些~

alen1985 2009-04-07
  • 打赏
  • 举报
回复
好像00ABAB的时候不行,怀疑题目出问题了!大家帮忙看下
M_S_D_N 2009-04-07
  • 打赏
  • 举报
回复
这里不是算法区么?
[Quote=引用 1 楼 hairetz 的回复:]
建议发去算法区问dlyme
[/Quote]
绿色夹克衫 2009-04-07
  • 打赏
  • 举报
回复
这题似乎无解呀?不知道LZ是不是有啥没说清楚的地方?

00ABAB -> BAA00B 然后呢? -> B0AA0B -> 00AABB 最后一步允许么?
  • 打赏
  • 举报
回复
建议发去算法区问dlyme

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧