题目
感觉没什么问题,但是 80 分(BFS)。
难道是思路的问题?
#include<cstdio>
#include<queue>
using namespace std;
struct Node {
int val;
long long stp;
};
long long bfs(int n) {
queue<Node>q;
q.push((Node){3,0});
while(!q.empty()) {
Node p=q.front();
q.pop();
if(p.val==n)
return p.stp;
q.push((Node){p.val-1,p.stp+1});
int tmp=p.val*2;
if(tmp>10000)
tmp=10000;
q.push((Node){tmp,p.stp+1});
}
return -1;
}
int main() {
int n;
scanf("%d",&n);
printf("%lld",bfs(n));
return 0;
}