• 牛客 Flip Game


    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    const int ax[5] = {0, -1, 1, 0, 0};
    const int ay[5] = {0, 0, 0, -1, 1};
    char maze[10][10], back[10][10];
    void turn(int x, int y) {
        for(int i = 0; i < 5; i++) {
            int tempx = x + ax[i];
            int tempy = y + ay[i];
            if(tempx >= 0 && tempx < 4 && tempy >= 0 && tempy < 4)
            	maze[tempx][tempy] ^= 1;
        }
    }
    int solve() {
    	int ans = 0x3f3f3f3f;
    	for (int i = 0; i <= 2 << 4; ++i) {
    		memcpy(back, maze, sizeof maze);
    		int now = 0;
    		for (int j = 0; j < 4; ++j) {
    			if (i >> j & 1) {
    				now++;
    				turn(0, j);
    			}
    		}
    		for (int k = 0; k < 3; ++k)
    			for (int l = 0; l < 4; ++l)
    				if (maze[k][l] == '0') {
    					turn(k + 1, l);
    					now++;
    				}
    		int flag = 1;
    		for (int j = 0; j < 4; j++) {
    			if (maze[3][j] == '0') {
    				flag = 0;
    				break;
    			}
    		}
    		if (flag) ans = min(ans, now);
    		memcpy(maze, back, sizeof back);
    	}
    	return ans;
    }
    int main() {
        for(int i = 0; i < 4; i++)
            for(int j = 0; j < 4; j++) {
                char c;
                cin >> c;
                if(c == 'w')   maze[i][j] = '0';
                else    maze[i][j] = '1';
            }
        int ans = solve();
        for(int i = 0; i < 4; i++)
            for(int j = 0; j < 4; j++)
                if(maze[i][j] == '0')   maze[i][j] = '1';
                else    maze[i][j] = '0';
        ans = min(ans, solve());
        if(ans == 0x3f3f3f3f)    puts("Impossible");
        else    printf("%d
    ", ans);
        return 0;
    }
    
  • 相关阅读:
    通过微软的HTML Help Workshop 利用.html文件 生成简单的chm帮助类的文件
    CHM编写软件
    tinyxml使用笔记与总结
    UCOS源码剖析 (一)
    灵性领悟的四个阶段-肯·威尔伯
    ans menu list
    lxm --- ans lb config
    macvtap介绍
    影子系统密码忘记
    Linux环境安装.NET运行环境
  • 原文地址:https://www.cnblogs.com/all-taker/p/12905169.html
Copyright © 2020-2023  润新知