NOI2.1.755 Flip Game 题解
文章目录
这一题是一道英文题。作者看完这一题后:
题目
题目的大概意思就是说:
一个4*4的方阵,每一个格子中的棋子要么是黑色的,要么是白色的,你每翻动一个棋子,那个棋子和上下左右都会被翻动,翻动的规则是黑变白,白变黑,问你最少要动几个棋子就可以让方阵中的所有棋子变成同种颜色(黑或白)。如果行,就输出翻几个,否则就输出“Impossible”。输入中以’w’为白色,以‘b’为黑色。每个字母中间不含空格。
输入样例:
bwwb
bbwb
bwwb
bwww
输出样例:
4
思路
这一道题的思路非常的简单,因为题目说大小固定是4*4,而且除黑白外绝对没有其他的。所以可以先用一个bool二维数组来储存黑白,然后使用暴力枚举每一种的情况(翻或不翻),所有的棋子选择过一遍后判断一下是否所有的棋子都为同一种颜色,如果是的话跟之前翻动的棋子最小值比较。最后输出就OK了。
代码
说完思路,代码也就轻而易举了。
#include<bits/stdc++.h>
using namespace std;
bool a[5][5];
int ans = 2147483647;
void change(int x,int y){
//把上下左右和本身都翻转。
a[x][y] = !a[x][y];
a[x+1][y] = !a[x+1]