这个题不能用dfs吗
查看原帖
这个题不能用dfs吗
1005753
sxjsxj楼主2023/9/14 22:03
#include<iostream>
using namespace std;
bool f[1000001];
int n,ans=1e6+1;
void dfs(int x,int cnt)
{
	f[x]=1;
	if(cnt>n) return;
	if(x==n)
	{
		ans=min(ans,cnt);
		return;
	}
	if(x<n && !f[x+1])   dfs(x+1,cnt+1);
	if(x-1>1 && !f[x-1]) dfs(x-1,cnt+1);
	if(!f[2*x])		  	 dfs(2*x,cnt+1);
}
main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n;
    dfs(1,1);
    cout<<ans;
}

想不到怎么做了,每次都输出n或者超时

2023/9/14 22:03
加载中...