poj3087:http://poj.org/problem?id=3087

题意:题意简化之后的就是:给你两个长度均为c的字符串s1,s2,然后给你一个2*c的串ss,现在每次从s2,中取一个,然后再从s1,取出一个(都是从左往右),组成新的串,如果新的的串和ss相同,则说明s1,s2可以通过若干次洗牌,组成ss。现在就是来求这个步数,若存在,则输出,否则输出-1.
题解:直接模拟。但是要注意一个问题。就是strcmp(s1,s2)s1,s2后面要加‘\0’,我就是没有注意这个问题结果贡献了4wa。

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<map>
#include<string>
using namespace std;
char s1[],s2[],aim[],temp[];
int c;
int main(){
int t;
scanf("%d",&t);
for(int cas=;cas<=t;cas++){
map<string,int>Q;
scanf("%d",&c);
scanf("%s",s1);
scanf("%s",s2);
scanf("%s",aim);
int counts=;
Q[aim]=;bool flag=true;
while(true){
for(int i=;i<=*c-;i+=)
temp[i]=s2[i/];
for(int i=;i<=*c-;i+=)
temp[i]=s1[i/];
counts++;
temp[*c]='\0';
if(strcmp(temp,aim)==)break;
if(Q[temp]){
flag=false;
break;
}
Q[temp]=;
for(int i=;i<c;i++)
s1[i]=temp[i];
for(int j=c;j<=*c-;j++)
s2[j-c]=temp[j];
}
if(flag)printf("%d %d\n",cas,counts);
else printf("%d -1\n",cas);
}
}

Shuffle'm Up的更多相关文章

  1. Spark Shuffle原理、Shuffle操作问题解决和参数调优

    摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuff ...

  2. Collections.shuffle

    1.Collections.shuffler 最近有个需求是生成十万级至百万级的所有随机数,最简单的思路是一个个生成,生成新的时候排重,但是这样时间复杂度是o(n^2),网上看了几个博客的解决方法都不 ...

  3. [LeetCode] Shuffle an Array 数组洗牌

    Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] n ...

  4. mapReduce的shuffle过程

    http://www.jianshu.com/p/c97ff0ab5f49 总结shuffle 过程: map端的shuffle: (1)map端产生数据,放入内存buffer中: (2)buffer ...

  5. spark shuffle 相关细节整理

    1.Shuffle Write 和Shuffle Read具体发生在哪里 2.哪里用到了Partitioner 3.何为mapSideCombine 4.何时进行排序 之前已经看过spark shuf ...

  6. Hadoop学习笔记—10.Shuffle过程那点事儿

    一.回顾Reduce阶段三大步骤 在第四篇博文<初识MapReduce>中,我们认识了MapReduce的八大步骤,其中在Reduce阶段总共三个步骤,如下图所示: 其中,Step2.1就 ...

  7. 由乱序播放说开了去-数组的打乱算法Fisher–Yates Shuffle

    之前用HTML5的Audio API写了个音乐频谱效果,再之后又加了个播放列表就成了个简单的播放器,其中弄了个功能是'Shuffle'也就是一般播放器都有的列表打乱功能,或者理解为随机播放. 但我觉得 ...

  8. 【面试】shuffle函数的实现

    一.前言 有位同学面试的时候被问到shuffle函数的实现,他之后问我,我知道这个函数怎么用,知道是对数组(或集合)中的元素按随机顺序重新排列.但是没有深入研究这个是怎么实现的.现在直接进入JDK源码 ...

  9. MapReduce Shuffle过程

    MapReduce Shuffle 过程详解 一.MapReduce Shuffle过程 1. Map Shuffle过程 2. Reduce Shuffle过程 二.Map Shuffle过程 1. ...

  10. [转]完美洗牌(Perfect Shuffle)问题

    [转]原博文地址:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/02.09.md ...

随机推荐

  1. Android如何在Framework层使用解锁代码

    import android.app.KeyguardManager; import android.app.KeyguardManager.KeyguardLock; import com.andr ...

  2. [Unity3D]Unity3D游戏开发之自己主动寻路与Mecanim动画系统的结合

    大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 这段时间博主将大部分的精力都放在了研究官方演示样例项目上,主要是希望能够从中挖掘出有价值的东 ...

  3. Android 颜色渲染(四) BitmapShader位图渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色处理(四) BitmapShader位图渲染 public   BitmapShader(Bitmap bitmap,Shad ...

  4. 使用php glob函数查找文件,遍历文件目录(转)

    函数说明:array glob ( string $pattern [, int $flags ] )功能:寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注:被检查的文件必须是服务器系统的 ...

  5. myEclipse新建jsp,默认编码

    修改地方在: myeclipse →fiter and editor →jsp

  6. iOS UIKit:viewController之定义(2)

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  7. js--小结⑦---格式转换

  8. C#快速排序法

    最近面试的时候,被问到了快速排序法.一时之间,无法想起算法来. 重新看了书本,算法如下: 1)设置两个变量I.J,排序开始的时候:I=0,J=N-1: 2)以第一个数组元素作为关键数据,赋值给key, ...

  9. mysql 远程访问 配置

    sudo vi /etc/mysql/my.cnf 找到bind-address = 127.0.0.1 注释掉这行:#bind-address = 127.0.0.1 或者改为: bind-addr ...

  10. linux常用编辑器

    管理员在进行系统操作的时候,不可避免地会对文本进行修改,如进行各种服务程序配置文件的改动,使程序对用户提供不同的服务效果.在本章我们向大家介绍Linux上常见的编辑器ed.vi.emacs,同时以vi ...