直接暴力DFS,不用回溯,详见代码:
#include <bits/stdc++.h>
using namespace std;
void dfs(int a, int step) { //a表示当前处理到的数,step表示步数
if(a == 1) {
cout << step << '\n'; //输出结果
exit(0); //结束程序
} //到终止条件了,结束
dfs(a / 2, step + 1); //继续搜
}
int main () {
//init();
int n;
cin >> n;
dfs(n, 1); //调用
return 0;
}`