//开关问题
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[25];
//根据第一个碗的情况决定其后的情况
int cacl(int k)
{
int sum=0,f[25];
int res=k?1:0;
memset(f,0,sizeof(f));
f[0]=k,sum+=k;
for(int i=0;i<19;i++)
{
if((a[i]+sum)&1) { //由后一个碗来完成前一个碗的翻转,这样问题规模就减1
res++;
f[i+1]=1;
}
sum+=f[i+1];
if(i-1>=0) sum-=f[i-1];
}
return res;
}
int main()
{
for(int i=0;i<20;i++)
scanf("%d",&a[i]);
printf("%d\n",min(cacl(0),cacl(1)));
return 0;
}
poj 3185 开关问题
最新推荐文章于 2020-04-02 20:06:45 发布