bzoj1464

题解:

简单bfs

显然不能到负数

也不能超过k两倍

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=;
int b[N],vis[N],f[N];
int n,k;
int main()
{
scanf("%d%d",&n,&k);
int l=,r=;
b[]=n;
vis[n]=;
while (l<r)
{
int now=b[l++];
if (now->=&&!vis[now-])
{
vis[now-]=;
b[r++]=now-;
f[now-]=f[now]+;
}
if (now+<=*k&&!vis[now+])
{
vis[now+]=;
b[r++]=now+;
f[now+]=f[now]+;
}
if (now*<=*k&&!vis[now*])
{
vis[now*]=;
b[r++]=now*;
f[now*]=f[now]+;
}
}
printf("%d",f[k]);
}
上一篇:Macbook 的 print screen 是什么


下一篇:鸟哥Linux私房菜基础学习篇学习笔记1