pascal AB移动问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 11:13:05
有n对‘AB’和一对空格(N<=10),排成一行,如n=3时
初始状态: --ABABAB 目标状态:BBBAAA--(‘-’代表空格)。
规定:移动一次——任意的一对相邻的字母可移进空格(相当于与空格交换)。
任务使用最少的移动次数由初始状态移到目标状态。
样例:
输入:
3
输出:
--ABABAB
BAABA--B
BA--AABB
--BAAABB
BBBAAA--
step=4

哪位高手帮帮忙啊!!!!
用pascal语言!!!!!!!!!
也就是说,每次移动时,可以任选两个相邻的字母与两个空格交换位置,像第一步到第二步
--ABABAB
BAABA--B
就是把第六个字符和第七个字符'BA'与两个减号'--'交换(其中,输出的第一步是初始状态,是有两个减号'--'之后连接N个'AB',最后一步是目标状态,是由N个'B'+N
个'A'+'--')
求的是怎样移才可以用最少的步数由初始状态移到目标状态。

要具体的程序,要有优化(双向搜。。)

你的描述不是太清晰,我没完全看懂。但是我知道有一道Pascal题目:www.vijos.cn 上的 P1182 - 星际青蛙 是类似的题目,这道题目是有数学规律的。而你的题目我确实没完全懂,要么你改改题目描述我再来,要么你上vijos看看那个 星际青蛙 的 题解 ,那里有比较详细的解释。

只针对这一种情况的话,用普通广搜就可以了