题目链接:http://poj.org/problem?id=1753
题目大意:有4*4的正方形棋盘,里面有黑白棋子,我们翻转一个棋子会改变它本身以及周围棋子的颜色,求最少多少步可以把所以棋子翻成同色。
思路:首先判断棋盘本身是否为纯色,如果是输出0。
从挑出1个棋子翻转开始,挑出2个翻转,3个,4个……16个,共有2的16次方种翻转方法。
在翻转过程中若已经达成纯色则跳出循环输出答案。
若翻转16个棋子还是没有变成纯色则输出impossible。
代码如下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
using namespace std;
int panduan(int bitss[])
{
for(int i=0;i<15;i++)
{
if(bitss[i]!=bitss[i+1])
return 0;
}
return 1;
}