#include <cstdio>
#include <cstring>
#include <algorithm>
#include <climits>
using namespace std;
char str[30];
int a[30];
int dfs(int pos,int len,int step){
if(pos==len)
return a[pos-1]?INT_MAX:step;
if(a[pos-1]){
a[pos-1] = !a[pos-1];
a[pos] = !a[pos];
a[pos+1] = !a[pos+1];
step++;
}
return dfs(pos+1,len,step);
}
int main(){
while(scanf("%s",str)!=EOF){
int res = INT_MAX;
int len = strlen(str);
for(int i=0;i<strlen(str);i++)
a[i] = str[i]-'0';
//翻第0张牌
a[0] = !a[0];
a[1] = !a[1];
res = min(res,dfs(1,len,1));
for(int i=0;i<len;i++)
a[i] = str[i]-'0';
res = min(res,dfs(1,len,0));
if(res==INT_MAX)
printf("NO\n");
else
printf("%d\n",res);
}
return 0;
}
HDU 2209 DFS
猜你喜欢
转载自blog.csdn.net/weixin_42246923/article/details/80590329
今日推荐
周排行