设为首页 加入收藏

TOP

poj1753 (一)
2014-11-23 21:27:52 来源: 作者: 【 】 浏览:9
Tags:poj1753

#include
#include
#include
using namespace std;

int array[5][5],t[5][5];
int bit[5];

void Getbit(int i)
{
int t=4;
while(i!=0)
{
bit[t]=i%2;
i=i/2;
t--;
}
}

void flip(int i,int j)
{
array[i][j]=array[i][j]>0 0:1;
if(i-1>=1)
array[i-1][j]=array[i-1][j]>0 0:1;
if(i+1<=4)
array[i+1][j]=array[i+1][j]>0 0:1;
if(j-1>=1)
array[i][j-1]=array[i][j-1]>0 0:1;
if(j+1<=4)
array[i][j+1]=array[i][j+1]>0 0:1;
}

int main()
{
int i,j,sum,k;
int cnt,min,stand;
char ch;
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
scanf("%c",&ch);
if(ch=='w')
{
array[i][j]=1;
t[i][j]=1;
}
else
{
array[i][j]=0;
t[i][j]=0;
}
}
getchar();
}
min=16; //1
for(k=0;k<16;k++)
{
cnt=0;
sum=0;
memset(bit,0,sizeof(bit));
Getbit(k);

for(i=1;i<=4;i++)
{
if(bit[i]==1)
{
flip(1,i); //0 1
cnt++;
}
sum+=array[1][i]; //01
}

if(sum>2) stand=1;
else stand=0;

for(i=1;i<=3;i++)
for(j=1;j<=4;j++)
{
if(array[i][j]!=stand)
{
flip(i+1,j);
cnt++;
}
}

for(i=1;i<=4;i++)
if(array[4][i]!=stand)
{
printf("Impossible\n");
return 0;
}
if(cnt==0)
{
printf("0\n");
return 0;
}
else
{
if(cnt min=cnt;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
array[i][j]=t[i][j];
}
}
printf("%d\n",min);
return 0;
}

#include
#include
#include
using namespace std;

int array[5][5],t[5][5];
int bit[5];

void Getbit(int i)
{
int t=4;
while(i!=0)
{
bit[t]=i%2;
i=i/2;
t--;
}
}

void flip(int i,int j)
{
array[i][j]=array[i][j]>0 0:1;
if(i-1>=1)
array[i-1][j]=array[i-1][j]>0 0:1;
if(i+1<=4)
array[i+1][j]=array[i+1][j]>0 0:1;
if(j-1>=1)
array[i][j-1]=array[i][j-1]>0 0:1;
if(j+1<=4)
array[i][j+1]=array[i][j+1]>0 0:1;
}

int main()
{
int i,j,sum,k;
int cnt,min,stand;
char ch;
for(i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
scanf("%c",&ch);
if(ch=='w')
{
array[i][j]=1;
t[i][j]=1;
}
else
{
array[i][j]=0;
t[i][j]=0;
}
}
getchar();
}
min=16; //1
for(k=0;k<16;k++)
{
cnt=0;
sum=0;
memset(bit,0,sizeof(bit));
Getbit(k);

for(i=1;i<=4;i++)
{
if(bit[i]==1)
{
flip(1,i); //0 1
cnt++;
}
sum+=array[1][i]; //01
}

if(sum>2) stand=1;
else stand=0;

for(i=1;i<=3;i++)
for(j=1;j<=4;j++)
{
if(array[i][j]!=stand)
{

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 1879 继续畅通工程 最小生成.. 下一篇CF 256E Lucky Arrarys 线段树+DP

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何从内核协议栈到 (2025-12-27 03:19:09)
·什么是网络协议?有哪 (2025-12-27 03:19:06)
·TCP/ IP协议有哪些 (2025-12-27 03:19:03)
·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)