zoukankan      html  css  js  c++  java
  • 116. 飞行员兄弟

    直接暴力枚举所有状态,时间复杂度:(O(2^{16} imes 4^3))

    const int N=5;
    bool g[N][N],tmp[N][N];
    int n=4,m=4;
    
    bool check(int x,int y)
    {
        return x>=0 && x<n && y>=0 && y<m;
    }
    
    void change(int x,int y)
    {
        for(int i=0;i<n;i++) tmp[i][y]^=1;
        for(int i=0;i<m;i++) tmp[x][i]^=1;
        tmp[x][y]^=1;
    }
    
    int get(int x,int y)
    {
        return x*n+y;
    }
    
    int main()
    {
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            {
                char c;
                cin>>c;
                if(c == '-') g[i][j]=1;
                else g[i][j]=0;
            }
    
        vector<PII> ans;
        for(int s=0;s<(1<<16);s++)
        {
            memcpy(tmp,g,sizeof g);
    
            vector<PII> res;
            int cnt=0;
            for(int i=0;i<n;i++)
                for(int j=0;j<m;j++)
                    if(s>>get(i,j) & 1)
                    {
                        change(i,j);
                        res.pb({i,j});
                    }
    
            bool ok=true;
            for(int i=0;i<n;i++)
            {
               for(int j=0;j<m;j++)
                    if(!tmp[i][j])
                    {
                        ok=false;
                        break;
                    }
                if(!ok) break;
            }
    
            if(ok && (ans.size() == 0 || ans.size() > res.size()))
                ans=res;
        }
    
        cout<<ans.size()<<endl;
        for(int i=0;i<ans.size();i++)
            cout<<ans[i].fi+1<<' '<<ans[i].se+1<<endl;
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    js中有关类、对象的增强函数
    ES6学习准备
    JavaScript中类型检测
    网页性能优化
    前端工程化
    2014年度总结和计划
    vim命令汇总
    互联网思维
    传统企业信息化
    创业这三年¥.NET之尴尬处境
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14560383.html
Copyright © 2011-2022 走看看