翻纸牌游戏(dfs回溯)
翻纸牌游戏
Time Limit : 9000/3000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 2 Accepted Submission(s) : 2
#include<stdio.h>
#include<string.h>
#define MIN(x,y)(x<y?x:y)
int len,flot,ans;
int s[];
void turn(int x){
s[x]=!s[x];
if(x->=)s[x-]=!s[x-];
if(x+<len)s[x+]=!s[x+];
}
bool find(){
for(int i=;i<len;i++){
// printf("%d ",s[i]);
//if(s[i])puts("");
if(s[i])return false;
}
return true;
}
void dfs(int x,int time){
if(find()){
flot=;
ans=MIN(ans,time);
return;
}
if(x>=len)return;
dfs(x+,time);
turn(x);
dfs(x+,time+);
turn(x);
}
int main(){
char m[];
while(~scanf("%s",m)){
len=strlen(m);
for(int i=;i<len;i++)s[i]=m[i]-'';
s[len]='\0';
ans=0x3f3f3f3f;
flot=;
dfs(,);
//printf("%d\n",ans);
if(flot)printf("%d\n",ans);
else puts("NO");
}
return ;
}
代码2;
#include<stdio.h>
#include<string.h>
#define MIN(x,y)(x<y?x:y)
int len,flot,ans;
int s[],cnt[];
void turn(int x){
s[x]=!s[x];
if(x->=)s[x-]=!s[x-];
if(x+<len)s[x+]=!s[x+];
}
bool find(){
for(int i=;i<len;i++){
// printf("%d ",s[i]);
//if(s[i])puts("");
if(s[i])return false;
}
return true;
}
void dfs(int x){
if(find()){
flot=;
int temp=;
for(int i=;i<len;i++)if(cnt[i]==)temp++;
ans=MIN(ans,temp);
return;
}
if(x>=len)return;
for(cnt[x]=;cnt[x]<;){
turn(x);
cnt[x]++;
dfs(x+);
}
}
int main(){
char m[];
while(~scanf("%s",m)){
len=strlen(m);
for(int i=;i<len;i++)s[i]=m[i]-'';
s[len]='\0';
ans=0x3f3f3f3f;
flot=;
memset(cnt,,sizeof(cnt));
dfs();
//printf("%d\n",ans);
if(flot)printf("%d\n",ans);
else puts("NO");
}
return ;
}
翻纸牌游戏(dfs回溯)的更多相关文章
- HDU 2209 翻纸牌游戏(DFS)
题目链接 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦 ...
- hdu2209翻纸牌游戏
翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU 2209 翻纸牌游戏 状态BFS
翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem De ...
- HDU 2209 翻纸牌游戏
翻纸牌游戏 Time Limit : 9000/3000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submiss ...
- hdu 2209 翻纸牌游戏【贪心】
本来是冲着搜索去的--其实可以贪心 因为能改变第一位的只有第一位和第二位,然后改完之后后面的同理,也就是说只要贪心的推一遍就可以 但是注意要在翻第一个和不翻第一个之间取个min #include< ...
- 【HDOJ】2209 翻纸牌游戏
状态压缩+双向广搜.注意控制时间t. /* 2209 */ #include <iostream> #include <string> #include <map> ...
- 翻纸牌 高校俱乐部 英雄会 csdn
题目描述 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一张纸牌(由正翻到反,或者 ...
- P1074 靶形数独 dfs回溯法
题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...
- [Usaco2007 Open]Fliptile 翻格子游戏题解
问题 B: [Usaco2007 Open]Fliptile 翻格子游戏 时间限制: 5 Sec 内存限制: 128 MB 题目描述 Farmer John knows that an intell ...
随机推荐
- 精读《javascript高级程序设计》笔记三——面向对象的程序设计
重点来了,我认为这一章值得好好地反复地看.看第一遍 还是懵懵懂懂,现在看第二遍,终于能看出点意思了. 创建对象 工厂模式 function createPerson(name, age, job){ ...
- 游戏中网络数据包和HTTP数据的思考
快下班了,对于这个沙盒类文字游戏,其实考虑的东西还是很多的,服务器的架构,NPC, NPC API的运算,等等等 现在在思考大数据传输,比如背包数据或者拍卖行的商品展示数据在传输的时候的性能问题 目前 ...
- SQL Server MYSQL 检查点的好处
执行检查点时: 如果一个事务不没有提交.日志缓存还是会被更新到磁盘上的物理文件. 这样做就使得大事务commit 时也特别快!
- windows8设置环境变量
win8,win8.1如何配置java的环境变量 工具/原料 win8,win8.1 方法/步骤 在你的计算机上右击,选择其中的属性就可以了.如下图所示. 接下来,作出如下图所示的选择. 这个 ...
- iOS6和iOS7代码的适配(2)——status bar
用Xcode5运行一下应用,第一个看到的就是status bar的变化.在iOS6中,status bar是系统在处理,应用中不需要考虑这部分,iOS7之后是应用在处理,每个ViewControlle ...
- [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(四)
通过前面的操作,我们已经可以创建一个带有我们自己的PCI的watchdog外设qemu 虚拟机了. 目的: 1. 了解我们的外设情况. 2. 为在guest中开发我们自己的linux PCI驱动程序做 ...
- css背景渐变兼容(兼容所有ie)
css3里面一行可以搞定的事,换到ie里,要用滤镜,在网上找了很多,不知道什么原因都没用,终于找到个有用的,放在这里,方便大家用,自己也找得到~ 完整型代码,兼容所有浏览器: background: ...
- Html5 自定义数据属性
html5 可以为元素添加自定义属性,但是要添加前缀data-.(下面这个例子中的自定义属性的命名,其实是不规范的,不应该包含大写字符,例如:data-myName 应改命名为:data-myname ...
- 蓝桥杯试题集【Java】
一.Fibonacci数列 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. ...
- iOS 常用第三方
MWPhotoBrowser 非常好用的图片浏览器 FDFullscreenPopGesture 用于全屏滑动切换视图 Aspects 用于快速AOP编程 AFNetworking iOS开发中最为火 ...