Problem Description
有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌。但是麻烦的是,每当你翻一张纸牌(由正翻到反,或者有反翻到正)时,他左右两张纸牌(最左边和最右边的纸牌,只会影响附近一张)也必须跟着翻动,现在给你一个乱的状态,问你能否把他们整理好,使得每张纸牌都正面朝上,如果可以,最少需要多少次操作。

Input
有多个case,每个case输入一行01符号串(长度不超过20),1表示反面朝上,0表示正面朝上。

Output
对于每组case,如果可以翻,输出最少需要翻动的次数,否则输出NO。

Sample Input
01
011

Sample Output
NO
1

提示 程序设计竞赛开关问题,长度为1的时候特判一下,其他因为贪心来看如果本位制为1,就反转下一个,而如果开头确定了,后面的反转情况一定是固定的,所以O(N)的算法,0MS.。。

代码比较丑,仅供参考

#include<bits/stdc++.h>
#define input freopen("input.txt","r",stdin)
using namespace std;
int main(){input;int i,j,k,time1,time2;int a[25]={0},b[25]={0};string s;while(cin>>s){if(s=="0"){cout<<0<<endl;continue;}else if(s=="1"){cout<<1<<endl;continue;}int flag;for(flag=0,i=0;i<s.size();i++){if(s[i]=='1'){flag=1;break;}}if(flag==0){cout<<0<<endl;continue;}time1=time2=-1;for(i=0;i<s.size();i++){a[i]=b[i]=s[i]-'0';}for(i=0;i<s.size()-1;i++){if(b[i]==1){b[i]=1-b[i];b[i+1]=1-b[i+1];b[i+2]=1-b[i+2];time1++;}}if(b[s.size()-1]==1)time1=-1;   //注意如果末尾是1说明不能反转成功 for(i=0;i<s.size();i++){b[i]=a[i];}b[0]=1-b[0];   //将开头反转在考虑情况 b[1]=1-b[1];for(i=0;i<s.size()-1;i++){if(b[i]==1){b[i]=1-b[i];b[i+1]=1-b[i+1];b[i+2]=1-b[i+2];time2++;}}if(b[s.size()-1]==1)time2=-1;   //注意如果末尾是1说明不能反转成功 if(time1==time2&&time1==-1){cout<<"NO"<<endl;}else if(time1==-1&&time2!=-1){cout<<time2+2<<endl;}else if(time1!=-1&&time2==-1){cout<<time1+1<<endl;}e`
se{cout<<min(time1,time2+1)+1<<endl;}}return 0;
}

HDU 2209 翻纸牌游戏 By Assassin 模拟相关推荐

  1. HDU 2209 翻纸牌游戏 模拟

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

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

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

  3. 【HDOJ】2209 翻纸牌游戏

    状态压缩+双向广搜.注意控制时间t. /* 2209 */ #include <iostream> #include <string> #include <map> ...

  4. HDU 2209 C - 翻纸牌游戏

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

  5. 翻纸牌游戏 【HDU - 2209】【规律】

    题目链接 这道题竟是同时改变左右两个,一开始看成只改变其中一个,然后推了个状态,发现是偶数就行.奇数就NO,后来看到时就知道给WA了,并且还得重新推过. 那么,这道题又该如何求解?我们知道对于左右两端 ...

  6. hdu-2209 翻纸牌游戏

    http://acm.hdu.edu.cn/showproblem.php?pid=2209  题解:把所有的状态看成01二进制,状态压缩,比较简单的bfs+状态压缩 #include<cstd ...

  7. 基于C++实现MFC简单的纸牌小游戏,附纸牌游戏引擎源码!

    VC++ 纸牌戏框架源码,不是完整的游戏源代码,基于MFC,写的还不是太熟悉,唉,先凑合吧,偶会继续努力学习MFC的,这个框架也是做了好几天的东西,亏本奉献了.. 项目展示: 代码展示: 效果: VB ...

  8. 面向对象实验——solitaire纸牌游戏

    项目地址 https://github.com/ccclll777/Windows_Solitaire_game 如果有帮助可以点个star 实验内容 使用java/C++语言,利用面向对象技术,模拟 ...

  9. C语言编程纸牌游戏运行结果,C语言编程,纸牌游戏

    C语言编程,纸牌游戏 关注:170  答案:2  mip版 解决时间 2021-01-28 15:29 提问者孤独深渊 2021-01-28 08:16 编号为1-52张牌,正面向上,从第2张开始,以 ...

  10. 用计算机玩纸牌,《玩“纸牌”游戏》教学设计

    [教学目标] 知识目标:1.进一步认识窗口.对话框和菜单命令. 2.让学生掌握纸牌游戏的玩法,使学生从玩中学计算机知识. 3.使学生熟练掌握鼠标器的操作方法. 4.初步使用"帮助" ...

最新文章

  1. Exchange笔记之使用OWA加密访问邮箱
  2. 最重要的会计期间是_非会计专业考生如何备考注会?难度多大?
  3. python小程序源代码-整理了适合新手的20个Python练手小程序
  4. 消费提示:警惕近期淘宝上大量超低价白菜包邮产品
  5. ios 获取视频截图
  6. SAP Commerce的extensioninfo.xml
  7. SQL Server Query界面不能录入中文
  8. LeetCode meituan-006. 小团的神秘暗号
  9. java整蛊小游戏源码_Java 开发打飞机小游戏(附完整源码)
  10. 基于华为云的一个典型的持续部署方案
  11. 华为搭载鸿蒙2.0系统的手机,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...
  12. 基于Monorail的系统功能模块化
  13. SPSS作业-一元线性回归
  14. 漫漫人生录 | 一个月薪 120000 的[ 北京 ] 程序员的真实生活
  15. 便携式洁面仪商城质检报告检验标准是什么
  16. java中for(int a:list)
  17. 生成了一个严重警告并将其发送到远程终结点。这会导致连接终止。TLS 协议所定义的严重错误代码是...
  18. 3DMAX一键屋顶建模插件MW RoofGen使用教程
  19. BAT批处理让文件夹里的文件单个或多个依次移动到另外一个文件夹
  20. ORACLE数据库介绍

热门文章

  1. DBCO-PALA-g-PEG DBCO-聚硫辛酸-聚乙二醇
  2. win10无法打开设置,桌面右键显示设置提示ms-settings:display 该文件没有与之关联的程序来执行该操作
  3. 微型计算机不是ecu,ECU升级是什么意思?
  4. 第8周项目5:定期存款利息计算器
  5. 2020美赛F题翻译
  6. CocosCreater 发布apk接穿山甲广告SDK(一)
  7. python 多线程爬虫下载中图分类号
  8. 漂亮女人美丽秘诀------猕猴桃(奇异果)
  9. org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 文件提前结
  10. QQ号大规模被盗与你我有什么关系?你我该如何做?