http://acm.hdu.edu.cn/showproblem.php?pid=2209 

题解:把所有的状态看成01二进制,状态压缩,比较简单的bfs+状态压缩

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
#define M 1<<20+1
bool vis[M];
int l;
struct node{int st,move;
};
int bfs(int res){memset(vis,false,sizeof(vis));node p,q;queue<node> Q;p.move = 0;p.st = res;Q.push(p);while(!Q.empty()){q = Q.front();Q.pop();if(!q.st) return q.move;for(int i = 0;i < l;i++){p = q;if(!i) p.st = p.st ^ 3;//翻转第一个,只影响第二个else p.st = p.st ^ (7 <<(i-1));//中间翻转p.st &= (1<<l) - 1;//防溢出,不影响其结果if(vis[p.st]) continue;vis[p.st] = true;p.move = p.move + 1;Q.push(p);}}return -1;
}
int main(){char str[30];while(~scanf("%s",str)){l = strlen(str);int sum = 0;for(int i = 0;i < l;i++)sum = sum * 2 + str[i] - '0';int ans = bfs(sum);if(ans != -1) cout << ans << endl;else cout << "NO" << endl;}return 0;
}

hdu-2209 翻纸牌游戏相关推荐

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

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

  2. HDU 2209 翻纸牌游戏 模拟

    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. 基于C++实现MFC简单的纸牌小游戏,附纸牌游戏引擎源码!

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

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

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

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

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

  9. java中的纸牌游戏_JAVA课程设计纸牌游戏

    <JAVA课程设计纸牌游戏>由会员分享,可在线阅读,更多相关<JAVA课程设计纸牌游戏(16页珍藏版)>请在人人文库网上搜索. 1.一.问题分析和任务定义1.题目:纸牌游戏:编 ...

最新文章

  1. 15:解决IntelliJ IDEA的乱码问题
  2. 世界卫生组织发布新冠密切接触者追踪技术应用伦理指南,智源《AI伦理译丛》发布中文版...
  3. Python自动化开发学习22-Django上
  4. C++ STL的查找算法
  5. python 查看excel 多少行_13行代码实现对Excel自动分表(python)
  6. 卷积神经网络多输入和多输出
  7. linux 下安装SQLServer
  8. 固定dll的加载基址的方法
  9. 嘻哈 软件技术知识与项目管理知识
  10. 正确理解MySQL中的where和having的区别
  11. 深海迷航坐标传送代码_深海迷航全资源坐标一览 美丽水世界坐标位置介绍
  12. RW文档翻译学习——RW-BLE-KERNEL核心函数功能
  13. 基于UWB的室内SDS_TWR测距算法优化和定位算法融合的研究
  14. [STL源码剖析]空间置配器allocator
  15. 【新书速递】信息安全标委会委员推荐的金融科技安全工具书
  16. 树莓派pwm调速c语言,树莓派智能温控风扇(PWM控制风扇转速)
  17. DPU网络开发SDK——DPDK(二)
  18. xinetd使用指南
  19. 2022-2028年全球与中国饲料核苷酸行业市场需求预测分析
  20. 硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍

热门文章

  1. 杏树林孙文亮:在线医疗数据驱动实战
  2. 函数作用域,闭包,数据类型的题目
  3. 在jsp中应如何避免,request.getContextPath();等get报错问题
  4. Alpha系列(四)——主动投资管理定律(基本篇)
  5. 问答项目---登陆也要做验证!(JS和PHP验证)
  6. 二叉树(中序遍历)非递归
  7. 代码中特殊的注释技术——TODO、FIXME和XXX的用处
  8. 如何正确使用AD构造企业的组织架构
  9. imp导入时出现imp-00017 ora-06550的解决办法
  10. when to book didi?