翻纸牌游戏

Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3784    Accepted Submission(s): 1424

Problem Description
有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌。但是麻烦的是,每当你翻一张纸牌(由正翻到反,或者有反翻到正)时,他左右两张纸牌(最左边和最右边的纸牌,只会影响附近一张)也必须跟着翻动,现在给你一个乱的状态,问你能否把他们整理好,使得每张纸牌都正面朝上,如果可以,最少需要多少次操作。
Input
有多个case,每个case输入一行01符号串(长度不超过20),1表示反面朝上,0表示正面朝上。
Output
对于每组case,如果可以翻,输出最少需要翻动的次数,否则输出NO。
Sample Input
01 011
Sample Output
NO 1
思路:对于1的一定要翻转,所以可以分两种情况
对于第一张牌翻转,则接下去改变的牌为1的就要翻转。
对于第一张牌不翻转,接下去的牌继续判断翻转不翻转。
然后取最小值,若没有最小值,则说明不能完全翻转正面。
代码:
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;#define inf 0x3f3f3f3
char s[1010];
int a[1010];int dfs(int i,int len,int m)
{if(i==len)return a[i-1]?inf:m;if(a[i-1]){a[i-1] = !a[i-1];a[i] = !a[i];a[i+1] = !a[i+1];m++;}dfs(i+1,len,m);
}
int main()
{while(~scanf("%s",s)){int len=strlen(s);for(int i=0; i<len; i++)a[i]=s[i]-'0';int ans=inf;a[0]=!a[0];a[1]=!a[1];ans=min(ans,dfs(1,len,1));for(int i=0; i<len; i++)a[i]=s[i]-'0';ans=min(ans,dfs(1,len,0));if(ans==inf)printf("NO\n");else printf("%d\n",ans);}return 0;
}

hdu-2209 dfs相关推荐

  1. HDU 2209 C - 翻纸牌游戏

    C - 翻纸牌游戏 Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  2. HDU 2209 翻纸牌游戏(DFS)

    题目链接 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦 ...

  3. hdu 4751(dfs染色)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不 ...

  4. hdu 3560(dfs判环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3560 思路:dfs判环,这里成环的条件是环中的每个点的出度和入度都为1,因此dfs的时候只须判断的相连 ...

  5. HDU 2212 DFS (伪·DFS)

    链接 : http://acm.hdu.edu.cn/showproblem.php?pid=2212 本来是想练下DFS的,结果被题目标题坑了(HDU也搞标题党?),更坑的是题还这么水 直接输出四个 ...

  6. hdu 1175 DFS连连看

    题意:中文题就不说了. 思路:DFS,关键是那个转折大于两次就不行的情况怎么深搜,可以枚举递归起始点的四个方向,如果在DFS中的方向K和递归中的不一样而且还满足深搜条件,那么转折次数就加一. 这道题W ...

  7. poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)

    Sum It Up Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub ...

  8. hdu 5188 dfs+二分

    get了很多新技能 当时想到了用dfs,但是排序用的是限制时间排序,一直没搞出来. 正解: 二分用时,dfs判断,为了顺利进行做题,需要按照做题开始时间排序 还可以用dp 题意: 作为史上最强的刷子之 ...

  9. HDU 3699 DFS

    A hard Aoshu Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 62768/32768 K (Java/Oth ...

  10. HDU - Reversi(dfs+水题)

    题目链接:点击查看 题目大意:下棋游戏,简单描述一下规则就是,当轮到某一个颜色的棋子操作时,必须在可以吃掉对方棋子的地方下棋,所谓吃掉,就是下棋的地方可以和任意一个己方棋子可以连成一条直线,直线之中至 ...

最新文章

  1. CheckedListBox与下拉框联动代码
  2. 高性能key-value数据库
  3. 《腾讯传》读后感一——时势造英雄
  4. js post方式请求另外一个php,利用JS使用POST方式提交请求的方法(结合代码详细解答)...
  5. linux oracle semopm,Linux 内核参数设置于详解 --Oracle 安装
  6. mongodb查询find(
  7. Atitit 语言分类 形式语言 目录 1. 形式语言(英语:Formal language)是用精确的数学或机器可处理的公式定义的语言。 1 1.1. 形式语言理论是用数学方法研究自然语言(如英语
  8. java ruby 比较_java和ruby的一些比较
  9. html 弹出复选框,js点击文本框弹出可选择的checkbox复选框
  10. 利用Turbo C进行平面二维图形的平移,旋转,缩放,对称
  11. 理解AdaBoost算法
  12. 历史上康熙皇帝真的很喜欢微服私访吗?
  13. 弧度和度 180/PI PI/180换算关系
  14. 支付宝小程序获取用户信息及手机号
  15. 软件测试基础-自动化测试技术
  16. scrapy爬取伯乐在线文章
  17. jspseverlet学习笔记
  18. 做车牌识别的摄像头注意事项
  19. 基于JSP酒店预订系统
  20. oracle crs错误日志,集群日志中出现CRS-2316 / CRS-2317错误

热门文章

  1. linux ip别名和辅助ip地址
  2. HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)...
  3. flex学习笔记--关于拖动
  4. 招聘webgis开发经理和程序员
  5. onclick函数的导包问题
  6. linux 忘记密码(以centos6为例)
  7. stderr和stdout(printf、fprintf、sprintf)(转)
  8. java汽车租赁系统_汽车租赁公司全网低价
  9. [云炬创业基础笔记]第一章创业环境测试10
  10. 科大星云诗社动态20220111