一、内容

题意:给定2个字符串s1,s2,将2个字符串进行重组成S,规则是S2最下面拿一个,S1最下面拿1个,直到所有块都用完。

二、思路

  • 用map记录下S串结果,若以前访问过这个串代表不可能有结果直接返回-1
  • 然后就是模拟重组串的过程。

三、代码

#include<iostream>
#include<string>
#include<map>
using namespace std;
string End, s1, s2;
int N, C;
int f() {
string tem = s1 + s2;
map<string, bool>book;
int step = 0;
while (tem != End && !book[tem]) {
book[tem] = true; step++;
string newS = s1 + s2; int index = 0;
for (int i = 0; i < C; ++i) {
newS[index++] = tem[i + C];
newS[index++] = tem[i];
}
tem = newS;
}
if (tem == End)return step;
return -1;
}
int main() {
freopen("in.txt", "r", stdin);
cin >> N;
for (int i = 1; i <= N; ++i) {
cin >> C >> s1 >> s2 >> End;
cout << i << " " << f() << endl;
}
return 0;
}

POJ - 3087:Shuffle'm Up (字符串模拟)的更多相关文章

  1. POJ.3087 Shuffle'm Up (模拟)

    POJ.3087 Shuffle'm Up (模拟) 题意分析 给定两个长度为len的字符串s1和s2, 接着给出一个长度为len*2的字符串s12. 将字符串s1和s2通过一定的变换变成s12,找到 ...

  2. poj 3087 Shuffle'm Up ( map 模拟 )

    题目:http://poj.org/problem?id=3087 题意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s ...

  3. POJ 3087 Shuffle'm Up【模拟/map/string】

    Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14471 Accepted: 6633 Descrip ...

  4. POJ 3087 Shuffle&#39;m Up(模拟)

    Shuffle'm Up Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7404   Accepted: 3421 Desc ...

  5. DFS POJ 3087 Shuffle'm Up

    题目传送门 /* 题意:两块扑克牌按照顺序叠起来后,把下半部分给第一块,上半部给第二块,一直持续下去,直到叠成指定的样子 DFS:直接模拟搜索,用map记录该字符串是否被搜过.读懂题目是关键. */ ...

  6. POJ 3087 Shuffle'm Up(洗牌)

    POJ 3087 Shuffle'm Up(洗牌) Time Limit: 1000MS    Memory Limit: 65536K Description - 题目描述 A common pas ...

  7. POJ 3087 Shuffle'm Up

    Shuffle'm Up Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit ...

  8. POJ 3087 Shuffle'm Up (模拟+map)

    题目链接:http://poj.org/problem?id=3087 题目大意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块 ...

  9. poj 3087 Shuffle'm Up (模拟过程)

    Description A common pastime for poker players at a poker table is to shuffle stacks of chips. Shuff ...

  10. POJ 3087 Shuffle'm Up 模拟,看着不像搜索啊

    题意:给定s1,s1两副扑克,顺序从下到上.依次将s2,s1的扑克一张一张混合.例如s1,ABC; s2,DEF. 则第一次混合后为DAEBFC. 然后令前半段为s1, 后半段为s2. 如果可以变换成 ...

随机推荐

  1. 每天5分钟复习OpenStack(十二)Ceph FileStore 和 BlueSotre

    一个最小化的Ceph集群需要三个组件MON MGR OSD.上一章我们部署了MON,本章节我们完成剩下MGR 和OSD 的部署.在文末我们将重点介绍下什么是FileStore和BlueStore,并详 ...

  2. [ABC263E] Sugoroku 3

    Problem Statement There are $N$ squares called Square $1$ though Square $N$. You start on Square $1$ ...

  3. vue-test ------class绑定

    <template> <p :class="{'active':isActive}">Class样式绑定</p> <p :class=&q ...

  4. 安装MacOS - 初学者系列 - 学习者系列文章

    上次安装了个VMWare Workstation 17.5.0的精简注册版,昨天打开软件,发现竟然支持了MacOS操作系统了,所以就想把安装的过程记录一下. 1. 准备虚拟机: 1) 下载精简版: 从 ...

  5. .NET中如何实现高精度定时器

    .NET中有多少种定时器一文介绍过.NET中至少有6种定时器,但精度都不是特别高,一般在15ms~55ms之间.在一些特殊场景,可能需要高精度的定时器,这就需要我们自己实现了.本文将讨论高精度定时器实 ...

  6. flask请求钩子(就是django的中间件)

    flask中的请求钩子就是域django的中间件类似,作用都是用于在请求前.后.响应前.后进行一些hook操作. 请求钩子装饰器 @app.before_request # 请求前会调用,一般可以用来 ...

  7. C++ Qt开发:Charts折线图绘制详解

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts ...

  8. 【Python】【OpenCV】视频帧和摄像头帧操作 and 窗口显示

    一.读取写入视频文件 1 import cv2 2 3 # 创建一个视屏捕获对象 4 videoCapture = cv2.VideoCapture('AVI.avi') 5 6 # 获取视频的属性值 ...

  9. 从零玩转文件上传之七牛云-qiniufileupload

    title: 从零玩转文件上传之七牛云 date: 2022-03-27 02:21:00.478 updated: 2022-04-10 14:13:35.426 url: https://www. ...

  10. HDU 4641 K string 后缀自动机

    原题链接 题意 每个测试点,一开始给我们n,m,k然后是一个长度为n的字符串. 之后m次操作,1 c是往字符串后面添加一个字符c,2是查询字符串中出现k次以及以上的子串个数,m为2e5 思路 首先可以 ...