这个电梯是来搞笑的吗
查看原帖
这个电梯是来搞笑的吗
219935
JeffWang2019楼主2019/9/18 20:50

对,题目就是用来吸引你们的

为什么我这个dfs的cnt不会更新?

只有10分qwq

哪里出问题了??????

#include <bits/stdc++.h>
using namespace std;
int n,a,b,ans=0,cnt=9999999;
unsigned int k[202];
int vis[202];
bool end()
{
    bool check=true;
    for(int i=1;i<=n;i++)
    {
        if(i==b)
        {
            continue;
        }
        if(vis[i]==0)
        {
            check=false;
            return check;
        }
    }
    return true;
}
void dfs(int f,bool w,int x)
{
    ans++;
    if(w)
    {
        f+=x;
        if(f>n)
        {
            return;
        }
        if(vis[f]==1)
        {
            return;
        }
        if(end)
        {
            return;
        }
        if(f==b)
        {
            if(ans<cnt)
            {
                cnt=ans;
            }
            return;
        }
        vis[f]=1;
        dfs(f,true,k[f]);
        dfs(f,false,k[f]);
        vis[f]=0;
    }
    else
    {
        f-=x;
        if(f<1)
        {
            return;
        }
        if(vis[f]==1)
        {
            return;
        }
        if(end)
        {
        	cnt=-1; 
            return;
        }
        if(f==b)
        {
            if(ans<cnt)
            {
                cnt=ans;
            }
            return;
        }
        vis[f]=1;
        dfs(f,true,k[f]);
        dfs(f,false,k[f]);
        vis[f]=0;
    }
}
int main()
{
    memset(vis,0,sizeof(vis));
    scanf("%d%d%d",&n,&a,&b);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&k[i]);
    }
    dfs(a,true,k[a]);
    dfs(a,false,k[a]);
    printf("%d",cnt);
    return 0;
}
2019/9/18 20:50
加载中...