poj-3185-开关问题

简介: 描述   牛一行20他们喝的水碗。碗可以那么(面向正确的为清凉水)或颠倒的(一个位置而没有水)。他们希望所有20个水碗那么,因此用宽鼻子翻碗。   嘴太宽,他们不仅翻转一碗还碗的碗两侧(总共三个或三个——在两端的情况下碗——两碗)。

描述

 

牛一行20他们喝的水碗。碗可以那么(面向正确的为清凉水)或颠倒的(一个位置而没有水)。他们希望所有20个水碗那么,因此用宽鼻子翻碗。

 

嘴太宽,他们不仅翻转一碗还碗的碗两侧(总共三个或三个——在两端的情况下碗——两碗)。

 

给定的初始状态碗(1 =不能饮用的,0 =饮用——它甚至看起来像一碗),什么是必要的最小数量的碗翻转将所有的碗那么?

 

输入

 

1号线:一行20空格分隔的整数

 

输出

 

线路1:所需的最小数量的碗翻转翻碗那么(即。0)。对于给定的输入,它总是可以找到一些组合的翻转操作碗20 0。

 

样例输入

0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0

 

样例输出

3

 

提示

 

解释的样本:

 

翻转碗4,9岁和11岁时让他们饮用:

0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0(初始状态)

0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0(后翻碗4]

0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0翻碗后[9]

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0翻碗后[11]

思路:
分别从左右两边开始,找到为1 的位置,让后两个取反;不可能出现最后位置或首位置翻到最后扔为1;所以当这种情况出现就赋大值给计数器并终止
循环;最后取左右两计数器的最小值

#include<cmath> #include<iostream> using namespace std ; int main () { int cnt1=0,cnt2=0; int a[20],b[20]; for(int i=0;i<20;i++) { cin>>a[i]; b[i]=a[i]; } for(int i=0;i<20;i++) { if(a[i]==1) { if(i==19) {cnt1=20; break; } cnt1++; a[i+1]=!a[i+1]; a[i+2]=!a[i+2]; } } for(int i=19;i>=0;i--) { if(b[i]==1) { if(i==0) { cnt2=20; break; } cnt2++; b[i-1]=!b[i-1]; b[i-2]=!b[i-2]; } } cout<<min(cnt1,cnt2)<<endl; return 0; }

  

相关文章
F-POJ-3414 Pots
POJ-3414 Time Limit:1000 ms Memory Limit:65536 K Description You are given two po...
1002 0
POJ 1067 取石子游戏
取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 40917   Accepted: 13826 Description 有两堆石子,数量任意,可以不同。
1112 0
poj-2551-ones
Description Given any integer 0
774 0
POJ-1003-hangover
Description How far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length.
767 0
POJ 2487 Stamps
Description Background Everybody hates Raymond. He’s the largest stamp collector on planet earth and because of that he always makes fun of all the others at the stamp collector parties.
1064 0
|
存储 索引
|
算法 机器人 编译器
POJ-2632
#include int main() { int k,a,b,n,m,i,j,num,rep,rect[100][100],robot[100][3]; int flag; char c; for(scanf("%d...
928 0