hdu-2209 翻纸牌游戏
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 翻纸牌游戏相关推荐
- HDU 2209 翻纸牌游戏(DFS)
题目链接 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦 ...
- HDU 2209 翻纸牌游戏 模拟
Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一张纸牌(由 ...
- 【HDOJ】2209 翻纸牌游戏
状态压缩+双向广搜.注意控制时间t. /* 2209 */ #include <iostream> #include <string> #include <map> ...
- HDU 2209 C - 翻纸牌游戏
C - 翻纸牌游戏 Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- 翻纸牌游戏 【HDU - 2209】【规律】
题目链接 这道题竟是同时改变左右两个,一开始看成只改变其中一个,然后推了个状态,发现是偶数就行.奇数就NO,后来看到时就知道给WA了,并且还得重新推过. 那么,这道题又该如何求解?我们知道对于左右两端 ...
- 基于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.题目:纸牌游戏:编 ...
最新文章
- 15:解决IntelliJ IDEA的乱码问题
- 世界卫生组织发布新冠密切接触者追踪技术应用伦理指南,智源《AI伦理译丛》发布中文版...
- Python自动化开发学习22-Django上
- C++ STL的查找算法
- python 查看excel 多少行_13行代码实现对Excel自动分表(python)
- 卷积神经网络多输入和多输出
- linux 下安装SQLServer
- 固定dll的加载基址的方法
- 嘻哈 软件技术知识与项目管理知识
- 正确理解MySQL中的where和having的区别
- 深海迷航坐标传送代码_深海迷航全资源坐标一览 美丽水世界坐标位置介绍
- RW文档翻译学习——RW-BLE-KERNEL核心函数功能
- 基于UWB的室内SDS_TWR测距算法优化和定位算法融合的研究
- [STL源码剖析]空间置配器allocator
- 【新书速递】信息安全标委会委员推荐的金融科技安全工具书
- 树莓派pwm调速c语言,树莓派智能温控风扇(PWM控制风扇转速)
- DPU网络开发SDK——DPDK(二)
- xinetd使用指南
- 2022-2028年全球与中国饲料核苷酸行业市场需求预测分析
- 硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍