POJ 3087 Shuffle'm Up(BFS +模拟)
来源:互联网 发布:php文件怎么运行 编辑:程序博客网 时间:2024/06/05 17:38
题意:给定长度都为C两个字符串,S1,S2,和一个要求的结果字符串S12。先把 S2 的最下面一张牌放在最下面,然后S1,S2交错的叠放,得到新的S12,再把S12最下面的C个字符赋值给S1,把剩下的赋值给S2,再次重复上面的过程。最后求出要得到目标字符串S,问最少需要几步。
#include<iostream>#include<queue>#include<map>#include<cstring>#include<string>using namespace std;string s1,s2,s12;int C;int count1;string yeild1(string &s1,string &s2){ string temp; int i;for(i=0;i<2*C;i++){if(i%2==0)temp+=s2[i/2];else temp+=s1[i/2];}return temp;}void bfs(){map<string,int>map1;queue<string>q;string temp=yeild1(s1,s2);map1[temp]++;q.push(temp);while(!q.empty()){string u=q.front();q.pop(); if(u==s12){ cout<<++count1<<" "<<map1[u]<<endl; return ;}s1=u.substr(0,C); //分解子串,参数一;起始位置,参数二:个数(可省略) s2=u.substr(C);string v=yeild1(s1,s2);if(!map1.count(v)){q.push(v);map1[v]=map1[u]+1;} }cout<<++count1<<" "<<-1<<endl;}int main(){int N;cin>>N;count1=0;while(N--){cin>>C;cin>>s1>>s2>>s12;bfs();}return 0;}
1 0
- POJ 3087 Shuffle'm Up(BFS +模拟)
- 【POJ 3087】Shuffle'm Up(BFS,模拟,)
- Poj 3087 Shuffle'm Up 【BFS】
- poj 3087 Shuffle'm Up(bfs)
- POJ 3087 Shuffle'm Up(BFS)
- Shuffle'm Up poj 3087 bfs
- 【BFS】POJ 3087 Shuffle'm Up
- POJ 3087 Shuffle'm Up 模拟
- poj-3087-Shuffle'm Up-模拟
- POJ 3087 Shuffle'm Up(模拟题)
- POJ 3087 Shuffle'm Up (模拟)
- poj 3087 Shuffle'm Up (模拟)
- POJ 3087 Shuffle'm Up(模拟)
- POJ 3087 Shuffle'm Up(模拟)
- POJ 3087 Shuffle'm Up (模拟)
- POJ 3087 Shuffle'm Up(模拟)
- Shuffle'm Up (poj 3087 模拟)
- poj 3087 Shuffle'm Up(模拟题)
- python获取指定目录下的所有指定后缀的文件名
- Quartz.NET的管理工具
- 第七章 Protocol
- 排序算法复习——交换类排序
- Exception in thread "AWT-EventQueue-0" com.alibaba.fastjson.JSONException: syntax error, unexpect t
- POJ 3087 Shuffle'm Up(BFS +模拟)
- Swift guard使用
- 算法提高 勾股数
- meta 标签X-UA-Compatible和IE=Edge,chrome=1
- 1.6.4 分离原则: 策略同机制分离,接口同引擎分离
- React入门-1
- 双色点阵心形显示
- git remote、pull、push、fetch等命令
- 简易定时器