POJ.3087 Shuffle'm Up (模拟)
POJ.3087 Shuffle’m Up (模拟)
题意分析
给定两个长度为len的字符串s1和s2, 接着给出一个长度为len*2的字符串s12。
将字符串s1和s2通过一定的变换变成s12,找到变换次数
变换规则如下:
假设s1=12345,s2=67890
变换后的序列 s=6172839405
如果s和s12完全相等那么输出变换次数
如果不完全相等,s的前半部分作为s1,后半部分作为s2,重复上述过程。
直接模拟,注意给出的顺序是从底到上的。
代码总览
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <set>
#define nmax 205
using namespace std;
char str1[nmax],str2[nmax],str[nmax];
int t,ans,n;
void change(char temp[])
{
int pos = 0;
for(int i = 0;i<n;++i){
temp[pos++] = str2[i];
temp[pos++] = str1[i];
}
temp[2*n] = '\0';
ans++;
}
void split(char temp[])
{
int i;
for(i = 0;i<n;++i)
str1[i] = temp[i];
str1[i] = '\0';
for(int j = 0;j<n;++j,++i)
str2[j] = temp[i];
str2[i] = '\0';
}
void bfs()
{
char temp[nmax];
memset(temp,0,sizeof(temp));
change(temp);
set<string> s;
s.clear();
while(1){
if(strcmp(temp,str) == 0) return;
if(s.count(temp) == 1){
ans = -1;
return;
}else{
s.insert(temp);
}
split(temp);
change(temp);
}
}
int main()
{
scanf("%d",&t);
for(int i = 1; i<=t;++i){
ans = 0;
scanf("%d",&n);
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str);
bfs();
printf("%d %d\n",i,ans);
}
return 0;
}
POJ.3087 Shuffle'm Up (模拟)的更多相关文章
- POJ 3087 Shuffle'm Up (模拟+map)
题目链接:http://poj.org/problem?id=3087 题目大意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块 ...
- poj 3087 Shuffle'm Up (模拟过程)
Description A common pastime for poker players at a poker table is to shuffle stacks of chips. Shuff ...
- POJ 3087 Shuffle'm Up 模拟,看着不像搜索啊
题意:给定s1,s1两副扑克,顺序从下到上.依次将s2,s1的扑克一张一张混合.例如s1,ABC; s2,DEF. 则第一次混合后为DAEBFC. 然后令前半段为s1, 后半段为s2. 如果可以变换成 ...
- POJ 3087 Shuffle'm Up(洗牌)
POJ 3087 Shuffle'm Up(洗牌) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 A common pas ...
- DFS POJ 3087 Shuffle'm Up
题目传送门 /* 题意:两块扑克牌按照顺序叠起来后,把下半部分给第一块,上半部给第二块,一直持续下去,直到叠成指定的样子 DFS:直接模拟搜索,用map记录该字符串是否被搜过.读懂题目是关键. */ ...
- POJ 3087 Shuffle'm Up
Shuffle'm Up Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- poj 3087 Shuffle'm Up ( map 模拟 )
题目:http://poj.org/problem?id=3087 题意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s ...
- POJ 3087 Shuffle'm Up(模拟)
Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7404 Accepted: 3421 Desc ...
- POJ 3087 Shuffle'm Up【模拟/map/string】
Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14471 Accepted: 6633 Descrip ...
随机推荐
- [转]WIN2008 IIS7的日期格式
最近项目升级服务器从32位升级到64位的WIN2008,日期显示格式非我们所期望的yyyy-M-d格式,原以为修改控制面板的日期格式即可,可是不行. 修改注册表问题解决. 修改方法: 运行注册表编辑器 ...
- dotweb now released to Version 1.5
dotweb released to Version 1.5!!https://github.com/devfeel/dotweb What's new? 重要:go版本适配升级为1.9+ New f ...
- MySQL5.6.14从安装到启动全过程
1.下载 地址:http://dev.mysql.com/downloads/mysql/ 这里选择的是Linux-Generic平台,下载了MySQL-5.6.14-1.linux_glibc2.5 ...
- Professional Books
Machine Learning: Pattern Recognition and Machine Learning(PRML) https://mqshen.gitbooks.io/p ...
- 算法笔记(c++)--求一个数的所有质数因子
算法笔记(c++)--求一个数的所有质数因子 先贴题目: 这题不难,恶心在理解上面.最后看评论知道了怎么回事: 2*2*3*3*5=180 按照这逻辑的话应该输入的数由一系列质数相乘出来,所以每次找到 ...
- node stream流
stream 模块可以通过以下方式使用: const stream = require('stream'); Node.js 中有四种基本的流类型: Writable - 可写入数据的流(例如 f ...
- 20181120-4 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 01
此作业要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2409 版本控制地址 https://git.coding.net/lg ...
- OOP 1.1 引用
1.1 引用 1.语法:类型名&引用名=某变量名 e.g. int &b=a; 定义:引用则等价这个变量 引用名的类型是:类型 & 注意事项: ①定义引用时,一定要将其初始化成 ...
- 我是IT小小鸟(读后感)
序 1.兴趣,这本书第一个点讲兴趣,可是在中国填鸭式的教育下,有兴趣也被这种教育给泯灭了. 2.他山之石,可以攻玉.但不可照搬.这点我非常赞同作者的看法.别人东西你拿来,一定要在他的基础上进行创 ...
- C关键字volatile总结
做嵌入式C开发的相信都使用过一个关键字volatile,特别是做底层开发的.假设一个GPIO的数据寄存器地址是0x50000004,我们一般会定义一个这样的宏: #define GDATA *((vo ...