HDU

来源:互联网 发布:淘宝类目哪个是免费的 编辑:程序博客网 时间:2024/06/05 05:29

 HDU - 2209 翻纸牌游戏

    当前的这张牌是否翻转取决于它的前一张牌是否朝上,如果朝上,不翻转,朝下,则翻转,这是贪心的思想,但是,对于第一张

来说,它的前面没有牌了,所以可以翻转,也可以不翻转,分两种情况来判断,参考的别人的代码

   

#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;const int INF=0x3f3f3f3f;char s[21];int p[21];int dfs(int i,int len,int num){if(i==len) return p[i-1]?INF:num;if(p[i-1]) p[i-1]=0,p[i]=!p[i],p[i+1]=!p[i+1],++num;return dfs(i+1,len,num);}int main(void){while(scanf("%s",s)!=EOF){int len=strlen(s);for(int i=0;i<len;i++)    p[i]=s[i]-'0';//翻转第一张牌    p[0]=!p[0];p[1]=!p[1];int ans=INF;ans=min(ans,dfs(1,len,1));for(int i=0;i<len;i++)   p[i]=s[i]-'0';//不翻转第一张牌   ans=min(ans,dfs(1,len,0));if(ans==INF) printf("NO\n");else printf("%d\n",ans);       }return 0;}

原创粉丝点击