10分求调
查看原帖
10分求调
1252953
ych_9527楼主2024/8/2 18:27
#include<bits/stdc++.h>
using namespace std;
int ans=INT_MAX,n;
int vis[1000001];
int dr[3]={0,-1,1};
void dfs(int m,int setp){
    dr[0]=m;
    if(m==n){
        ans=min(ans,setp);
        return;
    }
    for(int i=0;i<3;i++){
        int b=m+dr[i];
        if(b>=1&&b<=n&&vis[b]==0){
            vis[b]=1;
            dfs(b,setp+1);
            vis[b]=0;
        }
    }
}
int main(){
    cin>>n;
    dfs(1,0);
    cout<<ans;
    return 0;
}
2024/8/2 18:27
加载中...