zoukankan      html  css  js  c++  java
  • 95. 费解的开关

    5 * 5 方阵,二进制枚举第一行的开关情况,后一行的开关情况由上一行的灯的亮暗情况决定,最后特判一下最后一行。所有开关次数取最小值,最后检查一下开关次数是否大于6就行了。

    #include<iostream>
    #include<cstring>
    
    using namespace std;
    
    const int N = 10;
    
    int n;
    int dx[] = {0, 1, 0, -1, 0}, dy[] = {0, 0, 1, 0, -1};
    char g[N][N], backup[N][N];
    
    void turn(int x, int y){
        for(int i = 0; i < 5; i ++){
            int a = x + dx[i], b = y + dy[i];
            if(a < 0 || a >= 5 || b < 0 || b >= 5) continue;
            g[a][b] ^= 1;
        }
    }
    
    int main(){
        cin >> n;
        
        while(n --){
            for(int i = 0; i < 5; i ++) cin >> g[i];
            
            int res = 10;
            
            memcpy(backup, g, sizeof g);
            
            for(int i = 0; i < 32; i ++){
                int step = 0;
                for(int j = 0; j < 5; j ++)
                    if(i >> j & 1){
                        step ++;
                        turn(0, j);
                    }
                
                for(int j = 1; j < 5; j ++)
                    for(int k = 0; k < 5; k ++)
                        if(g[j - 1][k] == '0'){
                            step ++;
                            turn(j, k);
                        }
                
                int flag = 1;
                for(int j = 0; j < 5; j ++)
                    if(g[4][j] == '0'){
                        flag = 0;
                        break;
                    }
                
                if(flag) res = min(res, step);
                
                memcpy(g, backup, sizeof g);
            }
            
            if(res > 6) res = -1;
            
            cout << res << endl;
        }
        
        return 0;
    }
    
  • 相关阅读:
    poj 2674 Linear world
    poj 3185 The Water Bowls
    The Largest Clique (uva11324)
    Proving Equivalences (LA 4287)
    强联通分量( HihoCoder 1185 )
    求点双联通分量(HihoCoder
    求桥,割点(HihoCoder
    欧拉回路
    uva10054
    表达式树(公共表达式消除 uva 12219)
  • 原文地址:https://www.cnblogs.com/tomori/p/13429756.html
Copyright © 2011-2022 走看看