#include <iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[25],b[25],ans=1000,cnt=0;
void turn(int &t)
{
if(t)
t=0;
else t=1;
}
void group(int num)
{
for(int i=0;i<3;i++)
turn(b[num+i]);
}
int main()
{
for(int i=1;i<=20;i++)
scanf("%d",&a[i]);
for(int k=0;k<4;k++)
{
for(int j=1;j<=20;j++)
b[j]=a[j];
if(k==0)
{
turn(b[1]);turn(b[2]);
cnt=1;
}
else if(k==1)
{
turn(b[20]);turn(b[19]);turn(b[1]);turn(b[2]);
cnt=2;
}
else if(k==2)
{
turn(b[20]);turn(b[19]);
cnt=1;
}
else if(k==3)
cnt=0;
for(int i=1;i<19;i++)
{
if(b[i]==1)
{
group(i);
cnt++;
}
}
if(b[19]==0&&b[20]==0)
{
if(cnt<ans)
ans=cnt;
}
}
printf("%d\n",ans);
return 0;
}
此题是一种翻转题型,1-17个点最多只要翻转17次,剩下边上的两点分类讨论一下即可
poj3185
最新推荐文章于 2020-04-02 20:06:45 发布