| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
贴一个简单易懂的代码//#include<bits/stdc++.h>
#include<cstring>
#include<iostream>
#include<cstdio>
using namespace std;
#define inf 0x3f3f3f3f
int e[10][10],e1[10][10];
int fx[4][2]={1,0,-1,0,0,1,0,-1};
void flip(int x,int y)
{
e1[x][y]^=1;
for(int i=0;i<4;++i)
e1[x+fx[i][0]][y+fx[i][1]]^=1;
}
int solve(int color)
{
int i,j,k,high=(1<<4),ret=inf;
for(i=0;i<high;++i)
{
int s=0;
memcpy(e1,e,sizeof(e));
for(j=0;j<4;++j)
if(i&(1<<j)) {s++;flip(1,j+1);}
for(int x1=2;x1<=4;++x1)
{
for(int y1=1;y1<=4;++y1)
{
if(e1[x1-1][y1]!=color){
s++;
flip(x1,y1);
}
}
}
for(j=1;j<=4;++j)
if(e1[4][j]!=color) break;
if(j==5) ret=min(ret,s);
}
return ret;
}
int main()
{
char ch;
for(int i=1;i<=4;++i)
for(int j=1;j<=4;++j){
cin>>ch;
e[i][j]=ch=='w'?0:1;
}
int ans=min(solve(0),solve(1));
if(ans==inf) puts("Impossible");
else cout<<ans<<endl;
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator