zoukankan      html  css  js  c++  java
  • 完全的精确覆盖模板

    代码

    struct DLX
    {
        int n,id;
        int L[maxn],R[maxn],U[maxn],D[maxn];
        int C[maxn],S[maxn],loc[maxn][2];
        int H[ms];
        void init(int nn=0) //传列长
        {
            n=nn;
            for(int i=0;i<=n;i++) U[i]=D[i]=i,L[i]=i-1,R[i]=i+1;
            L[0]=n; R[n]=0;
            id=n;
            memset(S,0,sizeof(S));
            memset(H,-1,sizeof(H));
        }
        void Link(int x,int y)
        {
            ++id;
            D[id]=y; U[id]=U[y];
            D[U[y]]=id; U[y]=id;
            loc[id][0]=x,loc[id][1]=y;
            C[id]=y; S[y]++;
            if(H[x]==-1) H[x]=L[id]=R[id]=id;
            else
            {
                int a=H[x];
                int b=R[a];
                L[id]=a; R[a]=id;
                R[id]=b; L[b]=id;
                H[x]=id;
            }
        }
        void Remove(int c)
        {
            L[R[c]]=L[c];
            R[L[c]]=R[c];
            for(int i=D[c];i!=c;i=D[i])
                for(int j=R[i];j!=i;j=R[j])
            {
                U[D[j]]=U[j];
                D[U[j]]=D[j];
                S[C[j]]--;
            }
        }
        void Resume(int c)
        {
            for(int i=U[c];i!=c;i=U[i])
                for(int j=R[i];j!=i;j=R[j])
            {
                S[C[j]]++;
                U[D[j]]=j;
                D[U[j]]=j;
            }
            L[R[c]]=c;
            R[L[c]]=c;
        }
        bool dfs(int step)
        {
            if(step>=N) return true;
            if(R[0]==0) return false;
            int Min=INF,c=-1;
            for(int i=R[0];i;i=R[i])
                if(Min>S[i]){ Min=S[i]; c=i; }
            Remove(c);
            for(int i=D[c];i!=c;i=D[i])
            {
                //ans[step]=loc[i][0];
                for(int j=R[i];j!=i;j=R[j]) Remove(C[j]);
                if(dfs(step+1)) return true;
                for(int j=L[i];j!=i;j=L[j]) Resume(C[j]);
            }
            Resume(c);
            return false;
        }
    }dlx;
    View Code
  • 相关阅读:
    app接口开发(php)
    eclipse JRE(unbound)问题
    HTTP状态码详解
    HTTP方法
    项目开发注意事项及技巧
    JavaWeb 路径问题
    POJ 3264 Balanced Lineup(RMQ_ST)
    了解NoSQL
    多表查询(章节摘要)
    ios UITableView 获取点击cell对象
  • 原文地址:https://www.cnblogs.com/wust-ouyangli/p/5749719.html
Copyright © 2011-2022 走看看