算法课-回溯专题-部分题解

版权声明:欢迎转载,请注明此博客地址。 https://blog.csdn.net/Ever_glow/article/details/84890162

1. 素数环问题

此题的数据已经很良心了,输入的时候有提醒偶数不会大于16,这不就是在疯狂暗示奇数不可能的情况吗?还有偶数小于16,我是真的不想卡超时。。。。超时的估计都是没特判奇数。

唯一的坑点可能就是1的时候需要输出1吧。

此题可能是需要素数提前打个表,也就是把素数先求出来,降低不必要的时间,然后按字典序输出的话,就是按照顺序去dfs就ok啊。真的没坑啊。

核心代码:

for(i = 1;i <= n;i++)
    {
        if(!vis[i] && prim[s[now]+i])
        {
            vis[i] = 1;
            s[now+1] = i;
            dfs(now+1);
            vis[i] = 0;
        }
    }

2. 符号三角形问题

龙队的题,不会就去问他,讲不懂就赖着不走。

看起来很友好,大约50%通过率。

3. 迷宫问题

这个题,没改之前是跟网上题解的输入相反的,为了照顾人民群众,我又改了回来,就是简单的迷宫问题啊,真的连坑都没有的,这个题相对简单。

通过率的话看起来蛮好的,符合预期。

核心代码:

for (int i = 0; i < 4; i++)
    {
        int tx = x+dir[i][0];
        int ty = y+dir[i][1];
        if (tx < 0 || tx >= m || ty < 0 || ty >= n)
            continue;
        if (s[tx][ty] == '*' || now[tx][ty] < now[x][y]) 
            continue;
        if (d != -1 && i != d && now[tx][ty] == now[x][y] )
            continue; 
        if (d != -1 && i != d)
            now[tx][ty] = now[x][y]+1;
        else now[tx][ty] = now[x][y];
        dfs (tx, ty, i);
    }

4. square problem

这个题也是良心题啊,没坑的,就只有3 4 4 8 这种数据稍微卡一下,我都不敢放ai==0的数据,生怕有写错的,还有20个1的数据稍微卡一下暴力dfs,不知道能不能卡的住,此题是入门题,很简单的。

核心代码:

for(int i = 0;i < 4;i++)
    {
        if((now[i]+s[t]) <= sum)
        {
            now[i] = now[i]+s[t];
            dfs(t+1);
            now[i] = now[i]-s[t];
        }
    }

5. Sum It Up

这个也是简单题,跟HDOJ那个题一样,改都没改,所以正常的话,那个题的代码就是可以通过的。需要先排序剪枝,不然会超时的。这里面会出现0的问题。提面我改了改。

核心代码:

for(int i = posa;i < k;i++)
    {
        t[posb] = s[i];
        dfs(s[i],i+1,sum+s[i],posb+1);
        while(i+1 < k && s[i] == s[i+1])
            i++;
    }

6. 最佳调度问题

这个题,很简单吧,网上的代码过不了了吧,头疼吧,崩溃吧。仔细读题啊,网上的题n<12,所以很多人开的数组是20,我的题面是100以内啊,WA了吧,数据虽然大,但是不会卡超时的。

注意dfs前需要降序排序,这样剪枝的时候会剪掉很多。

核心代码:

if(sum > n)
    {
        minn = min(minn,now);
        return ;
    }
    for(int i = 1;i <= k;i++)
    {
        if(s[i]+t[sum] > minn)
            continue;
        t[i] += s[sum];
        dfs(sum+1,max(now,t[i]));
        t[i] -= s[sum];
    }

7. 龙队题,找他。

数据,单独找我要吧,数据虽然水,但也出了好几天呢,就不公开了。现在看起来,是不是我的数据出简单了,这么水的数据,不过题真的不怪我。还有一个题呢,不放了吧,减轻点负担吧。

有问题继续问我就是了。

猜你喜欢

转载自blog.csdn.net/Ever_glow/article/details/84890162