HDU 2209 C - 翻纸牌游戏
Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
Input
Output
Sample Input
01 011
Sample Output
NO 1
自己写的贪心是直接遍历翻,一直wa,后来问别人,应该先枚举一下,两种情况,翻第一个和不翻第一个,然后在遍历找这两个里能翻成功的次数最小的,为什么要特殊枚举第一个点呢,仔细想想,应该是第一个点有特殊性,翻的时候可以只影响一个,下面是代码:
(附上几个自己想的样例:101 :2 11011 :2 1111 :2 00000 :0 010 :3 1001 :2 0110 :4 1010 :3 0101: 3 011110 :6)
#include<stdio.h>
#include<string.h>
int main()
{char n[100];int len,num[100],num1[100],i,j,flog,ans,ans1;while(~scanf("%s",n)){ans=0;ans1=0;flog=0;len=strlen(n);memset(num,0,sizeof(num));memset(num1,0,sizeof(num1));for(i=0;i<len;i++){num[i]=n[i]-'0';num1[i]=num[i];}for(j=0;j<2;j++){if(j==0){ans++;num[0]=!num[0];num[1]=!num[1];for(i=0;i<len;i++){ if(num[i]==1&&i!=len-1){ans++;num[i]=0;num[i+1]=!num[i+1];if(i+2<len)num[i+2]=!num[i+2];}}} else if(j==1){for(i=0;i<len;i++){ if(num1[i]==1&&i!=len-1){ans1++;num1[i]=0;num1[i+1]=!num1[i+1];if(i+2<len)num1[i+2]=!num1[i+2];//重复段不长,没必要写子函数了; }}}}if(num[len-1]==0&&num1[len-1]==0){if(ans<ans1)ans1=ans;printf("%d\n",ans1);}else if(num[len-1]==0){printf("%d\n",ans);}else if(num1[len-1]==0){printf("%d\n",ans1);}elseprintf("NO\n");}return 0;
}
HDU 2209 C - 翻纸牌游戏相关推荐
- HDU 2209 翻纸牌游戏(DFS)
题目链接 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦 ...
- HDU 2209 翻纸牌游戏 模拟
Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一张纸牌(由 ...
- 翻纸牌游戏 【HDU - 2209】【规律】
题目链接 这道题竟是同时改变左右两个,一开始看成只改变其中一个,然后推了个状态,发现是偶数就行.奇数就NO,后来看到时就知道给WA了,并且还得重新推过. 那么,这道题又该如何求解?我们知道对于左右两端 ...
- 【HDOJ】2209 翻纸牌游戏
状态压缩+双向广搜.注意控制时间t. /* 2209 */ #include <iostream> #include <string> #include <map> ...
- hdu-2209 翻纸牌游戏
http://acm.hdu.edu.cn/showproblem.php?pid=2209 题解:把所有的状态看成01二进制,状态压缩,比较简单的bfs+状态压缩 #include<cstd ...
- 基于C++实现MFC简单的纸牌小游戏,附纸牌游戏引擎源码!
VC++ 纸牌戏框架源码,不是完整的游戏源代码,基于MFC,写的还不是太熟悉,唉,先凑合吧,偶会继续努力学习MFC的,这个框架也是做了好几天的东西,亏本奉献了.. 项目展示: 代码展示: 效果: VB ...
- 用计算机玩纸牌,《玩“纸牌”游戏》教学设计
[教学目标] 知识目标:1.进一步认识窗口.对话框和菜单命令. 2.让学生掌握纸牌游戏的玩法,使学生从玩中学计算机知识. 3.使学生熟练掌握鼠标器的操作方法. 4.初步使用"帮助" ...
- 面向对象实验——solitaire纸牌游戏
项目地址 https://github.com/ccclll777/Windows_Solitaire_game 如果有帮助可以点个star 实验内容 使用java/C++语言,利用面向对象技术,模拟 ...
- java中的纸牌游戏_JAVA课程设计纸牌游戏
<JAVA课程设计纸牌游戏>由会员分享,可在线阅读,更多相关<JAVA课程设计纸牌游戏(16页珍藏版)>请在人人文库网上搜索. 1.一.问题分析和任务定义1.题目:纸牌游戏:编 ...
最新文章
- 实现在GET请求下调用WCF服务时传递对象(复合类型)参数
- 用标号跳出当前多重嵌套循环是否继续执行循环_4、在JAVA中如何跳出当前的多重嵌套循环?-Java面试题答案...
- 移动端接口:版本的兼容
- Leetcode51 n皇后 DFS+回溯(模板题)
- 内容提供器(Content-Provider)完整使用指南
- 实现一个在JNI中调用Java对象的工具类,从此只需一行代码
- rax+react hook 实现分页效果
- C++异常(exception)第一篇--综合讲解
- linux win10虚拟内存,高手解惑win10系统电脑虚拟内存不足的还原技巧
- python中的常量是什么意思_第14p,Python中的常量与注释。
- Ubuntu16.04下,Firefox每次打开新网页都是以新建Windows而不是Tab的解决方案:
- ugui unity3d 仪表盘_Unity3D---UGUI---UI创建以及Canvas设置
- 中国黑客常用六种工具及防御方法(转)
- Chrome终极全屏模式Kiosk
- 共享单车泡沫破灭,自行车产业链的每个环节都被波及
- 又有2名博士入选华为“天才少年”!学霸日常科研计划表曝光
- 若依源码分析(6)——部门管理
- CRUD的意思???
- JavaScript 教程「6」:数组
- 4.12 并发技术:sync包同步调度综合案例