0%

汉诺塔问题的第M步

思路讲解

https://www.hello-algo.com/chapter_divide_and_conquer/hanota_problem/#2

主要dfs代码。

image

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void dfs(ll rem,vll &src,vll &buf,vll &tar,char s,char b,char t){
if(ok) return;
if(rem==1){
move(src,tar);
if(tot==M){
cout<<s<<"--"<<t<<"\n";
ok=true;
return;
}
return;
}
// 利用B,将A移动至C
dfs(rem-1,src,tar,buf,s,t,b);
move(src,tar);
if(tot==M){
cout<<s<<"--"<<t<<"\n";
ok=true;
return;
}
dfs(rem-1,buf,src,tar,b,s,t);
}

AC代码

心路历程(WA,TLE,MLE……)