题目1542:黑白迷阵
来源:互联网 发布:手机淘宝店铺模版购买 编辑:程序博客网 时间:2024/09/21 08:56
- 题目描述:
黑白迷阵是一个GrassLand编写的手机游戏,它的规则非常简单,有如下4*5的棋盘,其中一些是格子是黑色,一些格子是白色的,每当点击其中某一个格子,它以及它上下左右五个格子的颜色会发出反转,如下图
游戏胜利的条件很简单,把所有的格子变为黑色即可。
GrassLand想知道,给定一个游戏格局,至少需要几次点击,就可以获得游戏的胜利。
- 输入:
输入包含多组测试用例。输入的第一行为一个整数T,代表共有的测试用例数。紧接着为T组测试用例。
每组测试用例,为由四行五列01阵列表示的游戏格局,其中0代表该格子的颜色为白色,1代表该格子的颜色为黑色。
- 输出:
对于每组测试用例,输出为一个整数,为至少需要的点击次数。数据保证所给格局可以在有限步内取得胜利。
- 样例输入:
20011101111111111111100111011111111011100
- 样例输出:
12
#include <stdio.h>#include <string.h>const int dx[5] = {-1,0,0,0,1};const int dy[5] = {0,-1,0,1,0};const int M = 4;const int N = 5;int T;int map[5][5];int flip[5][5];int get(int x, int y){int c = map[x][y];for(int d = 0; d < 5; d++){int x2 = x + dx[d];int y2 = y + dy[d];if(x2 >= 0 && x2 < M && y2 >= 0 && y2 < N){c += flip[x2][y2];}}return c % 2;}int calc(){for(int i = 1; i < M; i++){for(int j = 0; j < N; j++){if(get(i - 1,j) != 0){flip[i][j] = 1;}}}for(int j = 0; j < N; j++){if(get(M - 1, j) != 0){return -1;}}int res = 0;for(int i = 0; i < M; i++){for(int j = 0; j < N; j++){res += flip[i][j];}}return res;}int main(){while(scanf("%d", &T) != EOF){while(T--){char temp[10];for(int i = 0; i < M; i++){scanf("%s", &temp);for(int j = 0; j < N; j++){if(temp[j] == '0'){map[i][j] = 1;}else if(temp[j] == '1'){map[i][j] = 0;}}}int res = -1;for(int i = 0; i < 1 << N; i++){memset(flip, 0, sizeof(flip));for(int j = 0; j < N; j++){flip[0][N - 1 - j] = i >> j & 1;}int num = calc();if(num >= 0 && (res < 0 || res > num)){res = num;}}printf("%d\n", res);}}return 0;}
0 0
- 题目1542:黑白迷阵
- 题目1542:黑白迷阵 (状态DP)
- 九度OJ 9月赛第二场 题目1542:黑白迷阵 (状态压缩DP)
- [各种面试题] 黑白迷阵
- 数字迷阵
- 宝石迷阵思路
- BNU 4304 - 硬币迷阵
- BNU 4304 硬币迷阵
- BNUOJ 4304 硬币迷阵
- ZCMU-1434-糖果迷阵
- [AHOI2004]数字迷阵题解
- 【AHOI2004】数字迷阵 [ 结论题 ]
- [51nod 1527]城堡迷阵
- 从黑白到黑白
- 上篇日本人经营之道 一虚张声势广布迷阵
- Chris Dixon:如何走通idea迷阵?
- 黑白老鼠
- 黑白配
- spark note
- 【转】 PHP100视频教程(2012-2013版)
- 负数和strlen(str)不能进行比较
- java中HashMap详解
- Windows文件路径
- 题目1542:黑白迷阵
- C语言基础 ----sscanf
- 多态性 虚函数
- StringBuilder与StringBuffer的区别
- action接收参数方法简介
- Referenced file contains errors 解决方法
- 基于UDP的Sockets编程
- 博客之路的崛起
- Linux平台设备驱动