#include "linkStack.h"
static int number = 0;
void hanoi( char *s , int a , int b ) {
if ((0 <= a) && (a <= b)){
if (a == b) {
cout << s << endl;
++number;
}
else {
for (int i = a; i <= b; ++i) {
if ( (i>a)&&(s[i] == s[a]) )
continue;
char temp = s[a];
s[a] = s[i];
s[i] = temp;
hanoi(s, a + 1, b);
temp = s[a];
s[a] = s[i];
s[i] = temp;
}
}
}
}
int main(int argc, char **argv) {
char s[] = "abca";
hanoi( s , 0 , 3);
cout << number << endl;
system( "pause" );
return 0;
}
13_栈的递归实例4---全排列
最新推荐文章于 2024-03-01 20:43:10 发布
本文介绍了一个使用C++实现的汉诺塔问题求解算法。通过递归的方法,该程序能够找出从初始状态到目标状态的所有步骤,并计算出总的移动次数。示例中使用了字符串abca作为盘子的初始排列。

1056

被折叠的 条评论
为什么被折叠?



