【POJ】3185-The Water Bowls 模拟

来源:互联网 发布:21端口打开 编辑:程序博客网 时间:2024/06/15 08:36

http://poj.org/problem?id=3185

将一列碗翻成口朝上,一把下去可能同时反转3个或2个(首尾),求最小翻转次数。

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;int a[21]={0};int f[21]={0};int ans=100;int tmp;int main(){    for (int i=1;i<=20;i++){        cin >> a[i];    }    f[1]=tmp=1;    for (int i=2;i<=20;i++){   //翻第一个         if (f[i]=(f[i-2]^f[i-1]^a[i-1])) tmp++;    }    if (tmp<ans&&(f[19]^f[20]^a[20])==0) ans=tmp;    f[1]=tmp=0;    for (int i=2;i<=20;i++){  //不翻第一个         if (f[i]=(f[i-2]^f[i-1]^a[i-1])) tmp++;    }    if (tmp<ans&&(f[19]^f[20]^a[20]==0)) ans=tmp;    cout << ans << endl;}
原创粉丝点击